From ac66e15d7ad539a73f6de19027e72b3a949b1f62 Mon Sep 17 00:00:00 2001 From: mgw <1392924357@qq.com> Date: Fri, 9 Jun 2023 18:15:12 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E9=83=A8=E5=88=86cloud>sf=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E6=8E=A5=E5=8F=A3=E5=B7=B2=E5=AE=8C=E6=88=90=E5=B9=B6?= =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_base/models/tool_base.py | 240 ++--- sf_base/security/ir.model.access.csv | 28 +- sf_base/views/tool_base_menu.xml | 124 +-- sf_base/views/tool_base_views.xml | 112 +-- sf_mrs_connect/models/res_config_setting.py | 55 ++ sf_mrs_connect/models/sync_common.py | 998 ++++++++++++++++++++ 6 files changed, 1305 insertions(+), 252 deletions(-) diff --git a/sf_base/models/tool_base.py b/sf_base/models/tool_base.py index c1a90a92..6f8c7a1f 100644 --- a/sf_base/models/tool_base.py +++ b/sf_base/models/tool_base.py @@ -3,25 +3,25 @@ import logging from odoo import fields, models, api from odoo.exceptions import UserError -# from odoo.addons import mrs_base, mrs_common +# from odoo.addons import sf_base, sf_common from datetime import datetime # 功能刀具 class FunctionalCuttingTool(models.Model): - _name = 'mrs.functional.cutting.tool' + _name = 'sf.functional.cutting.tool' _description = '功能刀具' code = fields.Char('编码') name = fields.Char('名称') # 增加功能刀具类型、整体式刀具型号、刀片型号、刀杆型号、刀盘型号、刀柄型号、夹头型号、直径(mm)、刀具等级、加工精度(mm)、装刀长、刃数、整体刃长(mm)、有效刃长(mm)、最大寿命值、是否标准刀、适用范围 - functional_model_number = fields.Many2one('mrs.functional.cutting.tool.model', string='功能刀具类型', required=True) - integral_model_number = fields.Many2one('mrs.integral.cutting.tool', string='整体式刀具型号') - blade_model_number = fields.Many2one('mrs.blade', string='刀片型号') - cutterbar_model_number = fields.Many2one('mrs.cutter.bar', string='刀杆型号') - cutterpad_model_number = fields.Many2one('mrs.cutter.pad', string='刀盘型号') - handle_model_number = fields.Many2one('mrs.handle', string='刀柄型号', required=True) - chuck_model_number = fields.Many2one('mrs.chuck', string='夹头型号', required=True) + 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='刀具等级') @@ -38,230 +38,230 @@ class FunctionalCuttingTool(models.Model): # 功能刀具类型 class FunctionalCuttingToolModel(models.Model): - _name = 'mrs.functional.cutting.tool.model' + _name = 'sf.functional.cutting.tool.model' _description = '功能刀具类型' - name = fields.Char('名称', required=True) - code = fields.Char('编码', required=True) + name = fields.Char('名称') + code = fields.Char('编码') remark = fields.Text('备注') # 整体式刀具 class IntegralCuttingTool(models.Model): - _name = 'mrs.integral.cutting.tool' + _name = 'sf.integral.cutting.tool' _description = '整体式刀具' code = fields.Char('编码') - name = fields.Char('型号名称', required=True) + name = fields.Char('型号名称') # 整体式刀具类型字段,关联整体式刀具类型对象 - integral_model_number = fields.Many2one('mrs.integral.cutting.tool.model', '整体式刀具类型', required=True) + integral_model_number = fields.Many2one('sf.integral.cutting.tool.model', '整体式刀具类型') # 增加品牌、总长度(mm)、柄部长度(mm)、刃部长度(mm)、直径(mm)、刃数、前角(°)、后角(°)、主偏角(°)、材料型号、配对螺母(mm)、适用夹头型号、适用范围、图片、创建人、创建时间等字段 - brand = fields.Many2one('mrs.machine.brand', '品牌', required=True) - total_length = fields.Float('总长度(mm)', required=True) - shank_length = fields.Float('柄部长度(mm)', required=True) - blade_length = fields.Float('刃部长度(mm)', required=True) - diameter = fields.Float('直径(mm)', required=True) - blade_number = fields.Integer('刃数', required=True) - front_angle = fields.Float('前角(°)', required=True) - rear_angle = fields.Float('后角(°)', required=True) - main_included_angle = fields.Float('主偏角(°)', required=True) - material_model = fields.Many2one('mrs.production.materials', '材料型号', required=True) - nut = fields.Float('配对螺母(mm)', required=True) + brand = fields.Many2one('sf.machine.brand', '品牌') + 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.production.materials', '材料型号') + nut = fields.Float('配对螺母(mm)') # 适用夹头型号可以多选 - chuck_model = fields.Many2many('mrs.chuck', string='适用夹头型号', required=True) - scope = fields.Char('适用范围', required=True) + chuck_model = fields.Many2many('sf.chuck', string='适用夹头型号') + scope = fields.Char('适用范围') image = fields.Binary('图片') # 整体式刀具类型 class IntegralCuttingToolModel(models.Model): - _name = 'mrs.integral.cutting.tool.model' + _name = 'sf.integral.cutting.tool.model' _description = '整体式刀具类型' code = fields.Char('编码') - name = fields.Char('名称', required=True) + name = fields.Char('名称') remark = fields.Text('备注') # 刀片 class Blade(models.Model): - _name = 'mrs.blade' + _name = 'sf.blade' _description = '刀片' code = fields.Char('编码') - name = fields.Char('型号名称', required=True) + name = fields.Char('型号名称') # 刀片类型字段,关联刀片类型对象 - blade_model_number = fields.Many2one('mrs.blade.model', '刀片类型', required=True) + blade_model_number = fields.Many2one('sf.blade.model', '刀片类型') # 编码、型号名称、刀片类型、品牌、长度L(mm)、宽度D(mm)、高度T(mm)、顶角(°)、前角(°)、后角(°)、主偏角(°)、R角(°)、材料型号、加工硬度、配对螺母(mm)、适用刀杆/刀盘型号、刀尖半径(mm)、图片、创建人、创建时间字段 - brand = fields.Many2one('mrs.machine.brand', '品牌', required=True) - length = fields.Float('长度L(mm)', required=True) - width = fields.Float('宽度D(mm)', required=True) - height = fields.Float('高度T(mm)', required=True) - top_angle = fields.Float('顶角(°)', required=True) - front_angle = fields.Float('前角(°)', required=True) - rear_angle = fields.Float('后角(°)', required=True) - main_included_angle = fields.Float('主偏角(°)', required=True) - r_angle = fields.Float('R角(°)', required=True) - material_model = fields.Many2one('mrs.production.materials', '材料型号', required=True) - hardness = fields.Char('加工硬度', required=True) - nut = fields.Float('配对螺母(mm)', required=True) + 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.production.materials', '材料型号') + hardness = fields.Char('加工硬度') + nut = fields.Float('配对螺母(mm)') # 适用刀杆型号可以多选 - cutter_bar = fields.Many2many('mrs.cutter.bar', string='适用刀杆型号') + cutter_bar = fields.Many2many('sf.cutter.bar', string='适用刀杆型号') # 适用刀盘型号可以多选 - cutter_pad = fields.Many2many('mrs.cutter.pad', string='适用刀盘型号') - radius = fields.Float('刀尖半径(mm)', required=True) + cutter_pad = fields.Many2many('sf.cutter.pad', string='适用刀盘型号') + radius = fields.Float('刀尖半径(mm)') image = fields.Binary('图片') # 刀片类型 class BladeModel(models.Model): - _name = 'mrs.blade.model' + _name = 'sf.blade.model' _description = '刀片类型' code = fields.Char('编码') - name = fields.Char('名称', required=True) + name = fields.Char('名称') # 刀片类型字段,关联刀片对象 - blade_ids = fields.One2many('mrs.blade', 'blade_model_number', '刀片类型') + blade_ids = fields.One2many('sf.blade', 'blade_model_number', '刀片类型') remark = fields.Text('备注') # 刀杆 class CutterBar(models.Model): - _name = 'mrs.cutter.bar' + _name = 'sf.cutter.bar' _description = '刀杆' code = fields.Char('编码') - name = fields.Char('型号名称', required=True) + name = fields.Char('型号名称') # 刀杆类型字段,关联刀杆类型对象 - cutter_bar_model_number = fields.Many2one('mrs.cutter.bar.model', '刀杆类型', required=True) + cutter_bar_model_number = fields.Many2one('sf.cutter.bar.model', '刀杆类型') # 品牌、C柄径(mm)、L总长(mm)、材料型号、刃数、D刃径(mm)、适用刀片型号、配对扳手(mm)、配备螺丝(mm)、刀尖圆角半径、精度等级、硬度(°)、适用范围、图片、创建人、创建时间 - brand = fields.Many2one('mrs.machine.brand', '品牌', required=True) - c_diameter = fields.Float('C柄径(mm)', required=True) - total_length = fields.Float('L总长(mm)', required=True) - material_model = fields.Many2one('mrs.production.materials', '材料型号', required=True) - blade_number = fields.Integer('刃数', required=True) - d_diameter = fields.Float('D刃径(mm)', required=True) - blade = fields.Many2many('mrs.blade', string='适用刀片型号') - wrench = fields.Float('配对扳手(mm)', required=True) - screw = fields.Float('配备螺丝(mm)', required=True) - radius = fields.Float('刀尖圆角半径', required=True) - accuracy = fields.Char('精度等级', required=True) - hardness = fields.Char('硬度(°)', required=True) - scope = fields.Char('适用范围', required=True) + brand = fields.Many2one('sf.machine.brand', '品牌') + c_diameter = fields.Float('C柄径(mm)') + total_length = fields.Float('L总长(mm)') + material_model = fields.Many2one('sf.production.materials', '材料型号') + 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 = 'mrs.cutter.bar.model' + _name = 'sf.cutter.bar.model' _description = '刀杆类型' code = fields.Char('编码') - name = fields.Char('名称', required=True) + name = fields.Char('名称') remark = fields.Text('备注') # 刀盘 class CutterPad(models.Model): - _name = 'mrs.cutter.pad' + _name = 'sf.cutter.pad' _description = '刀盘' code = fields.Char('编码') - name = fields.Char('型号名称', required=True) + name = fields.Char('型号名称') # 刀盘类型字段,关联刀盘类型对象 - cutter_pad_model_number = fields.Many2one('mrs.cutter.pad.model', '刀盘类型', required=True) + cutter_pad_model_number = fields.Many2one('sf.cutter.pad.model', '刀盘类型') # 增加品牌、C柄径(mm)、L总长(mm)、材料型号、刃数、D刃径(mm)、适用刀片型号、配对扳手(mm)、配备螺丝(mm)、刀尖圆角半径、精度等级、硬度(°)、适用范围、图片、创建人、创建时间 - brand = fields.Many2one('mrs.machine.brand', '品牌', required=True) - c_diameter = fields.Float('C柄径(mm)', required=True) - total_length = fields.Float('L总长(mm)', required=True) - material_model = fields.Many2one('mrs.production.materials', '材料型号', required=True) - blade_number = fields.Integer('刃数', required=True) - d_diameter = fields.Float('D刃径(mm)', required=True) - blade = fields.Many2many('mrs.blade', string='适用刀片型号') - wrench = fields.Float('配对扳手(mm)', required=True) - screw = fields.Float('配备螺丝(mm)', required=True) - radius = fields.Float('刀尖圆角半径', required=True) - accuracy = fields.Char('精度等级', required=True) - hardness = fields.Char('硬度(°)', required=True) - scope = fields.Char('适用范围', required=True) + brand = fields.Many2one('sf.machine.brand', '品牌') + c_diameter = fields.Float('C柄径(mm)') + total_length = fields.Float('L总长(mm)') + material_model = fields.Many2one('sf.production.materials', '材料型号') + 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 = 'mrs.cutter.pad.model' + _name = 'sf.cutter.pad.model' _description = '刀盘类型' code = fields.Char('编码') - name = fields.Char('名称', required=True) + name = fields.Char('名称') remark = fields.Text('备注') # 刀柄 class Handle(models.Model): - _name = 'mrs.handle' + _name = 'sf.handle' _description = '刀柄' code = fields.Char('编码') - name = fields.Char('型号名称', required=True) + name = fields.Char('型号名称') # 刀柄类型字段,关联刀柄类型对象 - handle_model_number = fields.Many2one('mrs.handle.model', '刀柄类型', required=True) + handle_model_number = fields.Many2one('sf.handle.model', '刀柄类型') # 增加、刀柄类型、品牌、L(mm)、L1(mm)、D1(mm)、重量(kg)、材料型号、本体精度(mm)、配对螺母(mm)、适用夹头型号、夹持范围(mm)、检测精度、检测硬度、标准转速、图片、创建人、创建时间 - brand = fields.Many2one('mrs.machine.brand', '品牌', required=True) - length = fields.Float('L(mm)', required=True) - length1 = fields.Float('L1(mm)', required=True) - diameter1 = fields.Float('D1(mm)', required=True) - weight = fields.Float('重量(kg)', required=True) - material_model = fields.Many2one('mrs.production.materials', '材料型号', required=True) - body_accuracy = fields.Float('本体精度(mm)', required=True) - nut = fields.Float('配对螺母(mm)', required=True) - chuck_model = fields.Many2many('mrs.chuck.model', string='适用夹头型号', required=True) - clamping_range = fields.Float('夹持范围(mm)', required=True) - detection_accuracy = fields.Float('检测精度', required=True) - detection_hardness = fields.Char('检测硬度', required=True) - standard_speed = fields.Float('标准转速', required=True) + 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.production.materials', '材料型号') + 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 = 'mrs.handle.model' + _name = 'sf.handle.model' _description = '刀柄类型' code = fields.Char('编码') - name = fields.Char('名称', required=True) + name = fields.Char('名称') remark = fields.Text('备注') # 夹头对象(夹头型号对象) class Chuck(models.Model): - _name = 'mrs.chuck' + _name = 'sf.chuck' _description = '夹头' code = fields.Char('编码') - name = fields.Char('型号名称', required=True) + name = fields.Char('型号名称') # 夹头类型字段,关联夹头类型对象 - chuck_model_number = fields.Many2one('mrs.chuck.model', '夹头类型', required=True) + chuck_model_number = fields.Many2one('sf.chuck.model', '夹头类型') # 增加品牌、精度(mm)、外径(mm)、内径(mm)、高度(mm)、材料型号、配对螺母(mm)、适用刀柄型号、夹持范围(mm)、特性、图片、创建人、创建时间 - brand = fields.Many2one('mrs.machine.brand', '品牌', required=True) - accuracy = fields.Float('精度(mm)', required=True) - diameter = fields.Float('外径(mm)', required=True) - inner_diameter = fields.Float('内径(mm)', required=True) - height = fields.Float('高度(mm)', required=True) - material_model = fields.Many2one('mrs.production.materials', '材料型号', required=True) - nut = fields.Float('配对螺母(mm)', required=True) - handle_model = fields.Many2many('mrs.handle.model', string='适用刀柄型号', required=True) - clamping_range = fields.Float('夹持范围(mm)', required=True) - feature = fields.Char('特性', required=True) + 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.production.materials', '材料型号') + 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 = 'mrs.chuck.model' + _name = 'sf.chuck.model' _description = '夹头类型' code = fields.Char('编码') - name = fields.Char('名称', required=True) + name = fields.Char('名称') remark = fields.Text('备注') diff --git a/sf_base/security/ir.model.access.csv b/sf_base/security/ir.model.access.csv index b68c6271..f6d68674 100644 --- a/sf_base/security/ir.model.access.csv +++ b/sf_base/security/ir.model.access.csv @@ -16,20 +16,20 @@ access_sf_supplier_sort,sf_supplier_sort,model_sf_supplier_sort,base.group_user, access_sf_production_process_parameter,sf_production_process_parameter,model_sf_production_process_parameter,base.group_user,1,1,1,1 access_sf_production_process_category,sf_production_process_category,model_sf_production_process_category,base.group_user,1,1,1,1 -access_mrs_functional_cutting_tool,mrs.functional.cutting.tool,model_mrs_functional_cutting_tool,base.group_user,1,1,1,1 -access_mrs_functional_cutting_tool_model,mrs.functional.cutting.tool.model,model_mrs_functional_cutting_tool_model,base.group_user,1,1,1,1 -access_mrs_integral_cutting_tool,mrs.integral.cutting.tool,model_mrs_integral_cutting_tool,base.group_user,1,1,1,1 -access_mrs_integral_cutting_tool_model,mrs.integral.cutting.tool.model,model_mrs_integral_cutting_tool_model,base.group_user,1,1,1,1 -access_mrs_blade,mrs.blade,model_mrs_blade,base.group_user,1,1,1,1 -access_mrs_blade_model,mrs.blade.model,model_mrs_blade_model,base.group_user,1,1,1,1 -access_mrs_cutter_bar,mrs.cutter.bar,model_mrs_cutter_bar,base.group_user,1,1,1,1 -access_mrs_cutter_bar_model,mrs.cutter.bar.model,model_mrs_cutter_bar_model,base.group_user,1,1,1,1 -access_mrs_cutter_pad,mrs.cutter.pad,model_mrs_cutter_pad,base.group_user,1,1,1,1 -access_mrs_cutter_pad_model,mrs.cutter.pad.model,model_mrs_cutter_pad_model,base.group_user,1,1,1,1 -access_mrs_handle,mrs.handle,model_mrs_handle,base.group_user,1,1,1,1 -access_mrs_handle_model,mrs.handle.model,model_mrs_handle_model,base.group_user,1,1,1,1 -access_mrs_chuck,mrs.chuck,model_mrs_chuck,base.group_user,1,1,1,1 -access_mrs_chuck_model,mrs.chuck.model,model_mrs_chuck_model,base.group_user,1,1,1,1 +access_sf_functional_cutting_tool,sf.functional.cutting.tool,model_sf_functional_cutting_tool,base.group_user,1,1,1,1 +access_sf_functional_cutting_tool_model,sf.functional.cutting.tool.model,model_sf_functional_cutting_tool_model,base.group_user,1,1,1,1 +access_sf_integral_cutting_tool,sf.integral.cutting.tool,model_sf_integral_cutting_tool,base.group_user,1,1,1,1 +access_sf_integral_cutting_tool_model,sf.integral.cutting.tool.model,model_sf_integral_cutting_tool_model,base.group_user,1,1,1,1 +access_sf_blade,sf.blade,model_sf_blade,base.group_user,1,1,1,1 +access_sf_blade_model,sf.blade.model,model_sf_blade_model,base.group_user,1,1,1,1 +access_sf_cutter_bar,sf.cutter.bar,model_sf_cutter_bar,base.group_user,1,1,1,1 +access_sf_cutter_bar_model,sf.cutter.bar.model,model_sf_cutter_bar_model,base.group_user,1,1,1,1 +access_sf_cutter_pad,sf.cutter.pad,model_sf_cutter_pad,base.group_user,1,1,1,1 +access_sf_cutter_pad_model,sf.cutter.pad.model,model_sf_cutter_pad_model,base.group_user,1,1,1,1 +access_sf_handle,sf.handle,model_sf_handle,base.group_user,1,1,1,1 +access_sf_handle_model,sf.handle.model,model_sf_handle_model,base.group_user,1,1,1,1 +access_sf_chuck,sf.chuck,model_sf_chuck,base.group_user,1,1,1,1 +access_sf_chuck_model,sf.chuck.model,model_sf_chuck_model,base.group_user,1,1,1,1 diff --git a/sf_base/views/tool_base_menu.xml b/sf_base/views/tool_base_menu.xml index 6f44729a..bde509e3 100644 --- a/sf_base/views/tool_base_menu.xml +++ b/sf_base/views/tool_base_menu.xml @@ -2,241 +2,241 @@ - + 整体式刀具型号 ir.actions.act_window - mrs.integral.cutting.tool + sf.integral.cutting.tool tree,form - + 功能刀具型号 ir.actions.act_window - mrs.functional.cutting.tool + sf.functional.cutting.tool tree,form - + 刀片型号 ir.actions.act_window - mrs.blade + sf.blade tree,form - + 刀杆型号 ir.actions.act_window - mrs.cutter.bar + sf.cutter.bar tree,form - + 刀盘型号 ir.actions.act_window - mrs.cutter.pad + sf.cutter.pad tree,form - + 刀柄型号 ir.actions.act_window - mrs.handle + sf.handle tree,form - + 夹头型号 ir.actions.act_window - mrs.chuck + sf.chuck tree,form - + 功能刀具类型 ir.actions.act_window - mrs.functional.cutting.tool.model + sf.functional.cutting.tool.model tree,form - + 整体式刀具类型 ir.actions.act_window - mrs.integral.cutting.tool.model + sf.integral.cutting.tool.model tree,form - + 刀片类型 ir.actions.act_window - mrs.blade.model + sf.blade.model tree,form - + 刀杆类型 ir.actions.act_window - mrs.cutter.bar.model + sf.cutter.bar.model tree,form - + 刀盘类型 ir.actions.act_window - mrs.cutter.pad.model + sf.cutter.pad.model tree,form - + 刀柄类型 ir.actions.act_window - mrs.handle.model + sf.handle.model tree,form - + 夹头类型 ir.actions.act_window - mrs.chuck.model + sf.chuck.model tree,form - + - + - - + + - - + + diff --git a/sf_base/views/tool_base_views.xml b/sf_base/views/tool_base_views.xml index ea091428..417d96c1 100644 --- a/sf_base/views/tool_base_views.xml +++ b/sf_base/views/tool_base_views.xml @@ -3,8 +3,8 @@ - mrs.functional.cutting.tool.tree - mrs.functional.cutting.tool + sf.functional.cutting.tool.tree + sf.functional.cutting.tool @@ -17,8 +17,8 @@ - mrs.functional.cutting.tool.form - mrs.functional.cutting.tool + sf.functional.cutting.tool.form + sf.functional.cutting.tool
@@ -69,8 +69,8 @@ - mrs.integral.cutting.tool.tree - mrs.integral.cutting.tool + sf.integral.cutting.tool.tree + sf.integral.cutting.tool @@ -85,8 +85,8 @@ - mrs.integral.cutting.tool.form - mrs.integral.cutting.tool + sf.integral.cutting.tool.form + sf.integral.cutting.tool @@ -134,8 +134,8 @@ - mrs.blade.tree - mrs.blade + sf.blade.tree + sf.blade @@ -148,8 +148,8 @@ - mrs.blade.form - mrs.blade + sf.blade.form + sf.blade @@ -199,8 +199,8 @@ - mrs.cutter.bar.tree - mrs.cutter.bar + sf.cutter.bar.tree + sf.cutter.bar @@ -213,8 +213,8 @@ - mrs.cutter.bar.form - mrs.cutter.bar + sf.cutter.bar.form + sf.cutter.bar @@ -265,8 +265,8 @@ - mrs.cutter.pad.tree - mrs.cutter.pad + sf.cutter.pad.tree + sf.cutter.pad @@ -279,8 +279,8 @@ - mrs.cutter.pad.form - mrs.cutter.pad + sf.cutter.pad.form + sf.cutter.pad @@ -329,8 +329,8 @@ - mrs.cutter.handle.tree - mrs.handle + sf.cutter.handle.tree + sf.handle @@ -343,8 +343,8 @@ - mrs.cutter.handle.form - mrs.handle + sf.cutter.handle.form + sf.handle @@ -395,8 +395,8 @@ - mrs.cutter.chuck.tree - mrs.chuck + sf.cutter.chuck.tree + sf.chuck @@ -409,8 +409,8 @@ - mrs.cutter.chuck.form - mrs.chuck + sf.cutter.chuck.form + sf.chuck @@ -458,8 +458,8 @@ - mrs.cutter.function.tree - mrs.functional.cutting.tool.model + sf.cutter.function.tree + sf.functional.cutting.tool.model @@ -471,8 +471,8 @@ - mrs.cutter.function.form - mrs.functional.cutting.tool.model + sf.cutter.function.form + sf.functional.cutting.tool.model @@ -491,8 +491,8 @@ - mrs.integral.cutting.tool.model.tree - mrs.integral.cutting.tool.model + sf.integral.cutting.tool.model.tree + sf.integral.cutting.tool.model @@ -504,8 +504,8 @@ - mrs.integral.cutting.tool.model.form - mrs.integral.cutting.tool.model + sf.integral.cutting.tool.model.form + sf.integral.cutting.tool.model @@ -524,8 +524,8 @@ - mrs.blade.model.tree - mrs.blade.model + sf.blade.model.tree + sf.blade.model @@ -537,8 +537,8 @@ - mrs.blade.model.form - mrs.blade.model + sf.blade.model.form + sf.blade.model @@ -558,8 +558,8 @@ - mrs.cutter.bar.model.tree - mrs.cutter.bar.model + sf.cutter.bar.model.tree + sf.cutter.bar.model @@ -571,8 +571,8 @@ - mrs.cutter.bar.model.form - mrs.cutter.bar.model + sf.cutter.bar.model.form + sf.cutter.bar.model @@ -591,8 +591,8 @@ - mrs.cutter.pad.model.tree - mrs.cutter.pad.model + sf.cutter.pad.model.tree + sf.cutter.pad.model @@ -604,8 +604,8 @@ - mrs.cutter.pad.model.form - mrs.cutter.pad.model + sf.cutter.pad.model.form + sf.cutter.pad.model @@ -625,8 +625,8 @@ - mrs.handle.model.tree - mrs.handle.model + sf.handle.model.tree + sf.handle.model @@ -638,8 +638,8 @@ - mrs.handle.model.form - mrs.handle.model + sf.handle.model.form + sf.handle.model @@ -658,8 +658,8 @@ - mrs.chuck.model.tree - mrs.chuck.model + sf.chuck.model.tree + sf.chuck.model @@ -671,8 +671,8 @@ - mrs.chuck.model.form - mrs.chuck.model + sf.chuck.model.form + sf.chuck.model diff --git a/sf_mrs_connect/models/res_config_setting.py b/sf_mrs_connect/models/res_config_setting.py index 774fcc4e..da900e6a 100644 --- a/sf_mrs_connect/models/res_config_setting.py +++ b/sf_mrs_connect/models/res_config_setting.py @@ -44,6 +44,61 @@ class ResConfigSettings(models.TransientModel): _logger.info("同步资源库刀具") # self.env['sf.production.process.parameter'].sync_all_production_process_parameter() # _logger.info("同步表面工艺参数") + _logger.info("同步功能刀具") + # self.env['sf.functional.cutting.tool'].sync_all_functional_cutting_tool() + _logger.info("同步功能刀具完成") + _logger.info("定时同步每日功能刀具类型列表...") + # self.env['sf.functional.cutting.tool.model'].sync_functional_cutting_tool_model() + _logger.info("同步功能刀具类型完成") + _logger.info("同步功能刀具类型...") + # self.env['sf.functional.cutting.tool.model'].sync_all_functional_cutting_tool_model() + _logger.info("同步功能刀具类型完成") + _logger.info("同步定时同步每日整体式刀具类型列表...") + # self.env['sf.integral.cutting.tool'].sync_integral_cutting_tool() + _logger.info("同步整体式刀具类型完成") + _logger.info("同步每日刀片类型列表...") + self.env['sf.blade.model'].sync_blade_model() + _logger.info("同步每日刀片类型完成") + _logger.info("同步所有刀片类型列表...") + self.env['sf.blade.model'].sync_all_blade_model() + _logger.info("同步所有刀片类型完成") + _logger.info("同步每日刀杆类型...") + self.env['sf.cutter.bar.model'].sync_cutter_bar_model() + _logger.info("同步每日刀杆类型完成") + _logger.info("同步所有刀杆类型...") + self.env['sf.cutter.bar.model'].sync_all_cutter_bar_model() + _logger.info("同步所有刀杆类型完成") + _logger.info("同步每日刀盘类型...") + self.env['sf.cutter.pad.model'].sync_cutter_pad_model() + _logger.info("同步每日刀盘类型完成") + _logger.info("同步所有刀盘类型...") + self.env['sf.cutter.pad.model'].sync_all_cutter_pad_model() + _logger.info("同步所有刀盘类型完成") + _logger.info("同步每日刀柄类型...") + self.env['sf.handle.model'].sync_handle_model() + _logger.info("同步每日刀柄类型完成") + _logger.info("同步所有刀柄类型...") + self.env['sf.handle.model'].sync_all_handle_model() + _logger.info("同步所有刀柄类型完成") + _logger.info("同步每日夹头类型...") + self.env['sf.chuck.model'].sync_chuck_model() + _logger.info("同步每日夹头类型完成") + _logger.info("同步所有夹头类型...") + self.env['sf.chuck.model'].sync_all_chuck_model() + _logger.info("同步所有夹头类型完成") + _logger.info("同步每日整体式刀具类型...") + self.env['sf.integral.cutting.tool.model'].sync_integral_cutting_tool_model() + _logger.info("同步每日整体式刀具类型完成") + _logger.info("同步所有整体式刀具类型...") + self.env['sf.integral.cutting.tool.model'].sync_all_integral_cutting_tool_model() + _logger.info("同步所有整体式刀具类型完成") + _logger.info("同步每日刀片列表...") + self.env['sf.blade'].sync_blade() + _logger.info("同步每日刀片完成") + _logger.info("同步所有刀片列表...") + self.env['sf.blade'].sync_all_blade() + _logger.info("同步所有刀片完成") + except Exception as e: _logger.info("捕获错误信息:%s" % e) raise ValidationError("数据错误导致同步失败,请联系管理员") diff --git a/sf_mrs_connect/models/sync_common.py b/sf_mrs_connect/models/sync_common.py index 21f75741..82560332 100644 --- a/sf_mrs_connect/models/sync_common.py +++ b/sf_mrs_connect/models/sync_common.py @@ -1086,3 +1086,1001 @@ class sfProductionProcessParameter(models.Model): }) else: raise ValidationError("认证未通过") + + +# 同步功能刀具列表 +class sfSyncFunctional_cutting_tool(models.Model): + _inherit = 'sf.functional.cutting.tool' + _description = '功能刀具同步' + url = '/api/functional_cutting_tool/list' + + # 定时同步每日功能刀具 + def sync_functional_cutting_tool(self): + sf_sync_config = self.env['res.config.settings'].get_values() + token = sf_sync_config['token'] + sf_secret_key = sf_sync_config['sf_secret_key'] + headers = Common.get_headers(self, token, sf_secret_key) + + strUrl = sf_sync_config['sf_url'] + self.url + r = requests.post(strUrl, json={}, data=None, headers=headers) + r = r.json() + result = json.loads(r['result']) + print('result:%s' % result) + if result['status'] == 1: + if result.get('mrs_functional_cutting_tool_yesterday_list'): + for item in result['mrs_functional_cutting_tool_yesterday_list']: + if item: + brand = self.env['sf.functional.cutting.tool'].search( + [("code", '=', item['code'])]) + if not brand: + self.env['sf.functional.cutting.tool'].create({ + "name": item['name'], + "code": item['code'], + # 功能刀具类型 + "functional_model_number": self.env['sf.functiona`l.cutting.tool.model'].search( + [('code', '=', item['functional_model_number'])]).id, + # 整体刀具型号 + "integral_model_number": self.env['sf.integral.cutting.tool'].search( + [('code', '=', item['integral_model_number'])]).id, + # 刀片型号 + "blade_model_number": self.env['sf.blade'].search( + [('code', '=', item['blade_model_number'])]).id, + # 刀杆型号 + "cutterbar_model_number": self.env['sf.cutter.bar'].search( + [('code', '=', item['cutterbar_model_number'])]).id, + # 刀盘型号 + "cutterpad_model_number": self.env['sf.cutter.pad'].search( + [('code', '=', item['cutterpad_model_number'])]).id, + # 刀柄型号 + "handle_model_number": self.env['sf.handle'].search( + [('code', '=', item['handle_model_number'])]).id, + # 夹头型号 + "chuck_model_number": self.env['sf.chuck'].search( + [('code', '=', item['chuck_model_number'])]).id, + "diameter": item['diameter'], + "tool_grade": item['tool_grade'], + "machining_accuracy": item['machining_accuracy'], + "tool_length": item['tool_length'], + "blade_number": item['blade_number'], + "integral_blade_length": item['integral_blade_length'], + "effective_blade_length": item['effective_blade_length'], + "max_life": item['max_life'], + "is_standard": item['is_standard'], + "applicable_range": item['applicable_range'], + "image": item['image'], + + }) + else: + brand.write({ + "name": item['name'], + "code": item['code'], + # 功能刀具类型 + "functional_model_number": self.env['sf.functional.cutting.tool.model'].search( + [('code', '=', item['functional_model_number'])]).id, + # 整体刀具型号 + "integral_model_number": self.env['sf.integral.cutting.tool'].search( + [('code', '=', item['integral_model_number'])]).id, + # 刀片型号 + "blade_model_number": self.env['sf.blade'].search( + [('code', '=', item['blade_model_number'])]).id, + # 刀杆型号 + "cutterbar_model_number": self.env['sf.cutter.bar'].search( + [('code', '=', item['cutterbar_model_number'])]).id, + # 刀盘型号 + "cutterpad_model_number": self.env['sf.cutter.pad'].search( + [('code', '=', item['cutterpad_model_number'])]).id, + # 刀柄型号 + "handle_model_number": self.env['sf.handle'].search( + [('code', '=', item['handle_model_number'])]).id, + # 夹头型号 + "chuck_model_number": self.env['sf.chuck'].search( + [('code', '=', item['chuck_model_number'])]).id, + "diameter": item['diameter'], + "tool_grade": item['tool_grade'], + "machining_accuracy": item['machining_accuracy'], + "tool_length": item['tool_length'], + "blade_number": item['blade_number'], + "integral_blade_length": item['integral_blade_length'], + "effective_blade_length": item['effective_blade_length'], + "max_life": item['max_life'], + "is_standard": item['is_standard'], + "applicable_range": item['applicable_range'], + "image": item['image'], + + }) + else: + raise ValidationError("认证未通过") + + # 同步所有功能刀具 + def sync_all_functional_cutting_tool(self): + sf_sync_config = self.env['res.config.settings'].get_values() + token = sf_sync_config['token'] + sf_secret_key = sf_sync_config['sf_secret_key'] + headers = Common.get_headers(self, token, sf_secret_key) + + strUrl = sf_sync_config['sf_url'] + self.url + r = requests.post(strUrl, json={}, data=None, headers=headers) + r = r.json() + result = json.loads(r['result']) + print('result:%s' % result) + if result['status'] == 1: + if result.get('mrs_functional_cutting_tool_all_list'): + for item in result['mrs_functional_cutting_tool_all_list']: + if item: + brand = self.env['sf.functional.cutting.tool'].search( + [("code", '=', item['code'])]) + if not brand: + self.env['sf.functional.cutting.tool'].create({ + "name": item['name'], + "code": item['code'], + # 功能刀具类型 + "functional_model_number": self.env['sf.functional.cutting.tool.model'].search( + [('code', '=', item['functional_model_number'])]).id, + # 整体刀具型号 + "integral_model_number": self.env['sf.integral.cutting.tool'].search( + [('code', '=', item['integral_model_number'])]).id, + # 刀片型号 + "blade_model_number": self.env['sf.blade'].search( + [('code', '=', item['blade_model_number'])]).id, + # 刀杆型号 + "cutterbar_model_number": self.env['sf.cutter.bar'].search( + [('code', '=', item['cutterbar_model_number'])]).id, + # 刀盘型号 + "cutterpad_model_number": self.env['sf.cutter.pad'].search( + [('code', '=', item['cutterpad_model_number'])]).id, + # 刀柄型号 + "handle_model_number": self.env['sf.handle'].search( + [('code', '=', item['handle_model_number'])]).id, + # 夹头型号 + "chuck_model_number": self.env['sf.chuck'].search( + [('code', '=', item['chuck_model_number'])]).id, + "diameter": item['diameter'], + "tool_grade": item['tool_grade'], + "machining_accuracy": item['machining_accuracy'], + "tool_length": item['tool_length'], + "blade_number": item['blade_number'], + "integral_blade_length": item['integral_blade_length'], + "effective_blade_length": item['effective_blade_length'], + "max_life": item['max_life'], + "is_standard": item['is_standard'], + "applicable_range": item['applicable_range'], + "image": item['image'], + + }) + else: + raise ValidationError("认证未通过") + + +# 同步功能刀具类型列表 +class SyncFunctionalCuttingToolModel(models.Model): + _inherit = 'sf.functional.cutting.tool.model' + _description = '同步功能刀具类型列表' + url = '/api/mrs_functional_cutting_tool_model/list' + + # 定时同步每日功能刀具类型列表 + def sync_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 + r = requests.post(strUrl, json={}, data=None, headers=headers) + r = r.json() + result = json.loads(r['result']) + print('result:%s' % result) + if result['status'] == 1: + if result.get('mrs_functional_cutting_tool_model_yesterday_list'): + for item in result['mrs_functional_cutting_tool_model_yesterday_list']: + if item: + brand = self.env['sf.functional.cutting.tool.model'].search( + [("code", '=', item['code'])]) + if not brand: + self.env['sf.functional.cutting.tool.model'].create({ + "name": item['name'], + "code": item['code'], + "remark": item['remark'], + }) + else: + brand.write({ + "name": item['name'], + "code": item['code'], + "remark": item['remark'], + }) + else: + raise ValidationError("认证未通过") + + # 同步所有功能刀具类型列表 + 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 + r = requests.post(strUrl, json={}, data=None, headers=headers) + r = r.json() + result = json.loads(r['result']) + print('result:%s' % result) + if result['status'] == 1: + if result.get('mrs_functional_cutting_tool_model_all_list'): + for item in result['mrs_functional_cutting_tool_model_all_list']: + if item: + brand = self.env['sf.functional.cutting.tool.model'].search( + [("code", '=', item['code'])]) + if not brand: + self.env['sf.functional.cutting.tool.model'].create({ + "name": item['name'], + "code": item['code'], + "remark": item['remark'], + }) + else: + brand.write({ + "name": item['name'], + "code": item['code'], + "remark": item['remark'], + }) + print('同步功能刀具类型列表成功') + else: + raise ValidationError("认证未通过") + + +# 同步整体式刀具列表 +class SyncIntegralCuttingTool(models.Model): + _inherit = 'sf.integral.cutting.tool' + _description = '同步整体式刀具列表' + url = '/api/mrs_integral_cutting_tool/list' + + # 定时同步每日整体式刀具列表 + def sync_integral_cutting_tool(self): + sf_sync_config = self.env['res.config.settings'].get_values() + token = sf_sync_config['token'] + sf_secret_key = sf_sync_config['sf_secret_key'] + headers = Common.get_headers(self, token, sf_secret_key) + + strUrl = sf_sync_config['sf_url'] + self.url + r = requests.post(strUrl, json={}, data=None, headers=headers) + r = r.json() + result = json.loads(r['result']) + print('result:%s' % result) + if result['status'] == 1: + if result.get('mrs_integral_cutting_tool_yesterday_list'): + for item in result['mrs_integral_cutting_tool_yesterday_list']: + chuck_list = [] + if item.get('chuck_model'): + for chuck in item.get('chuck_model'): + chuck_list.append(self.env['sf.chuck'].search( + [("code", '=', chuck)]).id) + if item: + brand = self.env['sf.integral.cutting.tool'].search( + [("code", '=', item['code'])]) + if not brand: + self.env['sf.integral.cutting.tool'].create({ + # code, name, integral_model_number, brand, total_length, shank_length, blade_length, diameter, blade_number, front_angle, rear_angle, main_included_angle, material_model, nut, chuck_model, scope, image, create_uid, create_date + "name": item['name'], + "code": item['code'], + "integral_model_number": self.env['sf.integral.cutting.tool.model'].search( + [("code", '=', item['integral_model_number'])]).id, + "brand": self.env['sf.brand'].search( + [("code", '=', item['brand'])]).id, + "total_length": item['total_length'], + "shank_length": item['shank_length'], + "blade_length": item['blade_length'], + "diameter": item['diameter'], + "blade_number": item['blade_number'], + "front_angle": item['front_angle'], + "rear_angle": item['rear_angle'], + "main_included_angle": item['main_included_angle'], + "material_model": self.env['sf.material.model'].search( + [("code", '=', item['material_model'])]).id, + "nut": item['nut'], + "chuck_model": chuck_list, + "scope": item['scope'], + "image": item['image'], + }) + else: + raise ValidationError("认证未通过") + + # 同步所有整体式刀具列表 + def sync_all_integral_cutting_tool(self): + sf_sync_config = self.env['res.config.settings'].get_values() + token = sf_sync_config['token'] + sf_secret_key = sf_sync_config['sf_secret_key'] + headers = Common.get_headers(self, token, sf_secret_key) + + strUrl = sf_sync_config['sf_url'] + self.url + r = requests.post(strUrl, json={}, data=None, headers=headers) + r = r.json() + result = json.loads(r['result']) + print('result:%s' % result) + if result['status'] == 1: + if result.get('mrs_integral_cutting_tool_all_list'): + for item in result['mrs_integral_cutting_tool_all_list']: + chuck_list = [] + if item.get('chuck_model'): + for chuck in item.get('chuck_model'): + chuck_list.append(self.env['sf.chuck'].search( + [("code", '=', chuck)]).id) + if item: + brand = self.env['sf.integral.cutting.tool'].search( + [("code", '=', item['code'])]) + if not brand: + self.env['sf.integral.cutting.tool'].create({ + # code, name, integral_model_number, brand, total_length, shank_length, blade_length, diameter, blade_number, front_angle, rear_angle, main_included_angle, material_model, nut, chuck_model, scope, image, create_uid, create_date + "name": item['name'], + "code": item['code'], + "integral_model_number": self.env['sf.integral.cutting.tool.model'].search( + [("code", '=', item['integral_model_number'])]).id, + "brand": self.env['sf.brand'].search( + [("code", '=', item['brand'])]).id, + "total_length": item['total_length'], + "shank_length": item['shank_length'], + "blade_length": item['blade_length'], + "diameter": item['diameter'], + "blade_number": item['blade_number'], + "front_angle": item['front_angle'], + "rear_angle": item['rear_angle'], + "main_included_angle": item['main_included_angle'], + "material_model": self.env['sf.material.model'].search( + [("code", '=', item['material_model'])]).id, + "nut": item['nut'], + "chuck_model": chuck_list, + "scope": item['scope'], + "image": item['image'], + }) + else: + raise ValidationError("认证未通过") + + +# 同步整体式刀具类型列表 +class SyncIntegralCuttingToolModel(models.Model): + _inherit = 'sf.integral.cutting.tool.model' + _description = '同步整体式刀具类型列表' + + url = '/api/mrs_integral_cutting_tool_model/list' + + # 定时同步整体式刀具类型列表 + def sync_integral_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 + r = requests.post(strUrl, json={}, data=None, headers=headers) + r = r.json() + result = json.loads(r['result']) + print('result:%s' % result) + if result['status'] == 1: + if result.get('mrs_integral_cutting_tool_model_list'): + for item in result['mrs_integral_cutting_tool_model_list']: + if item: + brand = self.env['sf.integral.cutting.tool.model'].search( + [("code", '=', item['code'])]) + if not brand: + self.env['sf.integral.cutting.tool.model'].create({ + "name": item['name'], + "code": item['code'], + "remark": item['remark'], + }) + else: + raise ValidationError("认证未通过") + + # 同步所有整体式刀具类型列表 + def sync_all_integral_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 + r = requests.post(strUrl, json={}, data=None, headers=headers) + r = r.json() + result = json.loads(r['result']) + print('result:%s' % result) + if result['status'] == 1: + if result.get('mrs_integral_cutting_tool_model_all_list'): + for item in result['mrs_integral_cutting_tool_model_all_list']: + if item: + brand = self.env['sf.integral.cutting.tool.model'].search( + [("code", '=', item['code'])]) + if not brand: + self.env['sf.integral.cutting.tool.model'].create({ + "name": item['name'], + "code": item['code'], + "remark": item['remark'], + }) + else: + raise ValidationError("认证未通过") + + +# 同步刀片列表 +class SyncBlade(models.Model): + _inherit = 'sf.blade' + _description = '同步刀片列表' + url = '/api/mrs_blade/list' + + # 定时同步每日刀片列表 + def sync_blade(self): + sf_sync_config = self.env['res.config.settings'].get_values() + token = sf_sync_config['token'] + sf_secret_key = sf_sync_config['sf_secret_key'] + headers = Common.get_headers(self, token, sf_secret_key) + + strUrl = sf_sync_config['sf_url'] + self.url + r = requests.post(strUrl, json={}, data=None, headers=headers) + r = r.json() + result = json.loads(r['result']) + print('result:%s' % result) + if result['status'] == 1: + if result.get('mrs_blade_yesterday_list'): + for item in result['mrs_blade_yesterday_list']: + if item: + # code, name, blade_model_number, brand, length, width, height, top_angle, front_angle, rear_angle, main_included_angle, r_angle, material_model, hardness, nut, cutter_bar, cutter_pad, radius, image, create_uid, create_date + brand = self.env['sf.blade'].search( + [("code", '=', item['code'])]) + if not brand: + self.env['sf.blade'].create({ + "name": item['name'], + "code": item['code'], + "blade_model_number": self.env['sf.blade.model'].search( + [("code", '=', item['blade_model_number'])]).id, + "brand": self.env['sf.machine.brand'].search( + [("code", '=', item['brand'])]).id, + "length": item['length'], + "width": item['width'], + "height": item['height'], + "top_angle": item['top_angle'], + "front_angle": item['front_angle'], + "rear_angle": item['rear_angle'], + "main_included_angle": item['main_included_angle'], + "r_angle": item['r_angle'], + "material_model": self.env['sf.materials.model'].search( + [("materials_no", '=', item['material_model'])]).id, + "hardness": item['hardness'], + "nut": item['nut'], + "cutter_bar": item['cutter_bar'], + "cutter_pad": item['cutter_pad'], + "radius": item['radius'], + "image": item['image'].encode('utf-8'), + }) + else: + brand.write({ + "name": item['name'], + "blade_model_number": self.env['sf.blade.model'].search( + [("code", '=', item['blade_model_number'])]).id, + "brand": self.env['sf.machine.brand'].search( + [("code", '=', item['brand'])]).id, + "length": item['length'], + "width": item['width'], + "height": item['height'], + "top_angle": item['top_angle'], + "front_angle": item['front_angle'], + "rear_angle": item['rear_angle'], + "main_included_angle": item['main_included_angle'], + "r_angle": item['r_angle'], + "material_model": self.env['sf.materials.model'].search( + [("materials_no", '=', item['material_model'])]).id, + "hardness": item['hardness'], + "nut": item['nut'], + "cutter_bar": item['cutter_bar'], + "cutter_pad": item['cutter_pad'], + "radius": item['radius'], + "image": item['image'].encode('utf-8'), + }) + else: + raise ValidationError("认证未通过") + + # 同步所有刀片列表 + def sync_all_blade(self): + sf_sync_config = self.env['res.config.settings'].get_values() + token = sf_sync_config['token'] + sf_secret_key = sf_sync_config['sf_secret_key'] + headers = Common.get_headers(self, token, sf_secret_key) + + strUrl = sf_sync_config['sf_url'] + self.url + r = requests.post(strUrl, json={}, data=None, headers=headers) + r = r.json() + result = json.loads(r['result']) + print('result:%s' % result) + if result['status'] == 1: + if result.get('mrs_blade_all_list'): + for item in result['mrs_blade_all_list']: + print('item_image:%s' % item['image'].encode('utf-8')) + + if item: + brand = self.env['sf.blade'].search( + [("code", '=', item['code'])]) + if not brand: + self.env['sf.blade'].create({ + "name": item['name'], + "code": item['code'], + "blade_model_number": self.env['sf.blade.model'].search( + [("code", '=', item['blade_model_number'])]).id, + "brand": self.env['sf.machine.brand'].search( + [("code", '=', item['brand'])]).id, + "length": item['length'], + "width": item['width'], + "height": item['height'], + "top_angle": item['top_angle'], + "front_angle": item['front_angle'], + "rear_angle": item['rear_angle'], + "main_included_angle": item['main_included_angle'], + "r_angle": item['r_angle'], + "material_model": self.env['sf.materials.model'].search( + [("materials_no", '=', item['material_model'])]).id, + "hardness": item['hardness'], + "nut": item['nut'], + "cutter_bar": item['cutter_bar'], + "cutter_pad": item['cutter_pad'], + "radius": item['radius'], + "image": item['image'].encode('utf-8'), + }) + else: + brand.write({ + "name": item['name'], + "blade_model_number": self.env['sf.blade.model'].search( + [("code", '=', item['blade_model_number'])]).id, + "brand": self.env['sf.machine.brand'].search( + [("code", '=', item['brand'])]).id, + "length": item['length'], + "width": item['width'], + "height": item['height'], + "top_angle": item['top_angle'], + "front_angle": item['front_angle'], + "rear_angle": item['rear_angle'], + "main_included_angle": item['main_included_angle'], + "r_angle": item['r_angle'], + "material_model": self.env['sf.materials.model'].search( + [("materials_no", '=', item['material_model'])]).id, + "hardness": item['hardness'], + "nut": item['nut'], + "cutter_bar": item['cutter_bar'], + "cutter_pad": item['cutter_pad'], + "radius": item['radius'], + "image": item['image'].encode('utf-8'), + }) + else: + raise ValidationError("认证未通过") + + +# 同步刀片类型列表 +class SyncBladeModel(models.Model): + _inherit = 'sf.blade.model' + _description = '同步刀片类型列表' + + url = '/api/mrs_blade_model/list' + + # 定时同步每日刀片列表 + def sync_blade_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 + r = requests.post(strUrl, json={}, data=None, headers=headers) + r = r.json() + result = json.loads(r['result']) + print('result:%s' % result) + if result['status'] == 1: + if result.get('mrs_blade_model_yesterday_list'): + for item in result['mrs_blade_model_yesterday_list']: + if item: + brand = self.env['sf.blade.model'].search( + [("code", '=', item['code'])]) + if not brand: + self.env['sf.blade.model'].create({ + "name": item['name'], + "code": item['code'], + "remark": item['remark'], + }) + else: + brand.write({ + "name": item['name'], + "code": item['code'], + "remark": item['remark'], + }) + print('同步每日刀片类型列表成功') + else: + raise ValidationError("认证未通过") + + # 定时同步所有刀片列表 + def sync_all_blade_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 + r = requests.post(strUrl, json={}, data=None, headers=headers) + r = r.json() + result = json.loads(r['result']) + print('result:%s' % result) + if result['status'] == 1: + if result.get('mrs_blade_model_all_list'): + for item in result['mrs_blade_model_all_list']: + if item: + brand = self.env['sf.blade.model'].search( + [("code", '=', item['code'])]) + if not brand: + self.env['sf.blade.model'].create({ + "name": item['name'], + "code": item['code'], + "remark": item['remark'], + }) + else: + brand.write({ + "name": item['name'], + "code": item['code'], + "remark": item['remark'], + }) + print('同步刀片类型列表成功') + else: + raise ValidationError("认证未通过") + + +# 同步刀杆列表 +class SyncCutterBar(models.Model): + _inherit = 'sf.cutter.bar' + _description = '同步刀杆列表' + + url = '/api/mrs_cutter_bar/list' + + # 定时同步每日刀杆列表 + def sync_cutter_bar(self): + sf_sync_config = self.env['res.config.settings'].get_values() + token = sf_sync_config['token'] + sf_secret_key = sf_sync_config['sf_secret_key'] + headers = Common.get_headers(self, token, sf_secret_key) + + strUrl = sf_sync_config['sf_url'] + self.url + r = requests.post(strUrl, json={}, data=None, headers=headers) + r = r.json() + result = json.loads(r['result']) + print('result:%s' % result) + if result['status'] == 1: + if result.get('mrs_cutter_bar_yesterday_list'): + for item in result['mrs_cutter_bar_yesterday_list']: + if item: + brand = self.env['sf.cutter.bar'].search( + [("code", '=', item['code'])]) + if not brand: + # code, name, cutter_bar_model_number, brand, c_diameter, total_length, material_model, blade_number, d_diameter, blade, wrench, screw, radius, accuracy, hardness, scope, image + self.env['sf.cutter.bar'].create({ + "code": item['code'], + "name": item['name'], + "cutter_bar_model_number": self.env['sf.cutter.bar'].search( + [("code", '=', item['cutter_bar_model_number'])]).id, + "brand": self.env['sf.machine.brand'].search( + [("code", '=', item['brand'])]).id, + "c_diameter": item['c_diameter'], + "total_length": item['total_length'], + "material_model": self.env['sf.materials.model'].search( + [("materials_no", '=', item['material_model'])]).id, + "blade_number": item['blade_number'], + "d_diameter": item['d_diameter'], + "blade": item['blade'], + "wrench": item['wrench'], + "screw": item['screw'], + "radius": item['radius'], + "accuracy": item['accuracy'], + "hardness": item['hardness'], + "scope": item['scope'], + "image": item['image'], + }) + + + + +# 同步刀杆类型列表 +class SyncCutterBarModel(models.Model): + _inherit = 'sf.cutter.bar.model' + _description = '同步刀杆类型列表' + + url = '/api/mrs_cutter_bar_model/list' + + # 定时同步每日刀杆类型列表 + def sync_cutter_bar_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 + r = requests.post(strUrl, json={}, data=None, headers=headers) + r = r.json() + result = json.loads(r['result']) + print('result:%s' % result) + if result['status'] == 1: + if result.get('mrs_cutter_bar_model_yesterday_list'): + for item in result['mrs_cutter_bar_model_yesterday_list']: + if item: + brand = self.env['sf.cutter.bar.model'].search( + [("code", '=', item['code'])]) + if not brand: + self.env['sf.cutter.bar.model'].create({ + "name": item['name'], + "code": item['code'], + "remark": item['remark'], + }) + else: + brand.write({ + "name": item['name'], + "code": item['code'], + "remark": item['remark'], + }) + print('同步每日刀片类型列表成功') + else: + raise ValidationError("认证未通过") + + # 定时同步所有刀杆类型列表 + def sync_all_cutter_bar_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 + r = requests.post(strUrl, json={}, data=None, headers=headers) + r = r.json() + result = json.loads(r['result']) + print('result:%s' % result) + if result['status'] == 1: + if result.get('mrs_cutter_bar_model_all_list'): + for item in result['mrs_cutter_bar_model_all_list']: + if item: + brand = self.env['sf.cutter.bar.model'].search( + [("code", '=', item['code'])]) + if not brand: + self.env['sf.cutter.bar.model'].create({ + "name": item['name'], + "code": item['code'], + "remark": item['remark'], + }) + else: + brand.write({ + "name": item['name'], + "code": item['code'], + "remark": item['remark'], + }) + print('同步刀杆类型列表成功') + else: + raise ValidationError("认证未通过") + + +# 同步刀盘列表 + + +# 同步刀盘类型列表 +class SyncCutterPadModel(models.Model): + _inherit = 'sf.cutter.pad.model' + _description = '同步刀盘类型列表' + + url = '/api/mrs_cutter_pad_model/list' + + # 定时同步每日刀盘类型列表 + def sync_cutter_pad_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 + r = requests.post(strUrl, json={}, data=None, headers=headers) + r = r.json() + result = json.loads(r['result']) + print('result:%s' % result) + if result['status'] == 1: + if result.get('mrs_cutter_pad_model_yesterday_list'): + for item in result['mrs_cutter_pad_model_yesterday_list']: + if item: + brand = self.env['sf.cutter.pad.model'].search( + [("code", '=', item['code'])]) + if not brand: + self.env['sf.cutter.pad.model'].create({ + "name": item['name'], + "code": item['code'], + "remark": item['remark'], + }) + else: + brand.write({ + "name": item['name'], + "code": item['code'], + "remark": item['remark'], + }) + print('同步每日刀盘类型列表成功') + else: + raise ValidationError("认证未通过") + + # 定时同步所有刀盘类型列表 + def sync_all_cutter_pad_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 + r = requests.post(strUrl, json={}, data=None, headers=headers) + r = r.json() + result = json.loads(r['result']) + print('result:%s' % result) + if result['status'] == 1: + if result.get('mrs_cutter_pad_model_all_list'): + for item in result['mrs_cutter_pad_model_all_list']: + if item: + brand = self.env['sf.cutter.pad.model'].search( + [("code", '=', item['code'])]) + if not brand: + self.env['sf.cutter.pad.model'].create({ + "name": item['name'], + "code": item['code'], + "remark": item['remark'], + }) + else: + brand.write({ + "name": item['name'], + "code": item['code'], + "remark": item['remark'], + }) + print('同步刀盘类型列表成功') + else: + raise ValidationError("认证未通过") + + +# 同步刀柄列表 + + +# 同步刀柄类型列表 +class SyncHandleModel(models.Model): + _inherit = 'sf.handle.model' + _description = '同步刀柄类型列表' + + url = '/api/mrs_handle_model/list' + + # 定时同步每日刀柄类型列表 + def sync_handle_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 + r = requests.post(strUrl, json={}, data=None, headers=headers) + r = r.json() + result = json.loads(r['result']) + print('result:%s' % result) + if result['status'] == 1: + if result.get('mrs_handle_model_yesterday_list'): + for item in result['mrs_handle_model_yesterday_list']: + if item: + brand = self.env['sf.handle.model'].search( + [("code", '=', item['code'])]) + if not brand: + self.env['sf.handle.model'].create({ + "name": item['name'], + "code": item['code'], + "remark": item['remark'], + }) + else: + brand.write({ + "name": item['name'], + "code": item['code'], + "remark": item['remark'], + }) + print('同步每日刀柄类型列表成功') + else: + raise ValidationError("认证未通过") + + # 定时同步所有刀柄类型列表 + def sync_all_handle_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 + r = requests.post(strUrl, json={}, data=None, headers=headers) + r = r.json() + result = json.loads(r['result']) + print('result:%s' % result) + if result['status'] == 1: + if result.get('mrs_handle_model_all_list'): + for item in result['mrs_handle_model_all_list']: + if item: + brand = self.env['sf.handle.model'].search( + [("code", '=', item['code'])]) + if not brand: + self.env['sf.handle.model'].create({ + "name": item['name'], + "code": item['code'], + "remark": item['remark'], + }) + else: + brand.write({ + "name": item['name'], + "code": item['code'], + "remark": item['remark'], + }) + print('同步刀柄类型列表成功') + else: + raise ValidationError("认证未通过") + + +# 同步夹头型号列表 + + +# 同步夹头类型列表 +class SyncChuckModel(models.Model): + _inherit = 'sf.chuck.model' + _description = '同步夹头类型列表' + + url = '/api/mrs_chuck_model/list' + + # 定时同步每日夹头型号列表 + def sync_chuck_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 + r = requests.post(strUrl, json={}, data=None, headers=headers) + r = r.json() + result = json.loads(r['result']) + print('result:%s' % result) + if result['status'] == 1: + if result.get('mrs_chuck_model_yesterday_list'): + for item in result['mrs_chuck_model_yesterday_list']: + if item: + brand = self.env['sf.chuck.model'].search( + [("code", '=', item['code'])]) + if not brand: + self.env['sf.chuck.model'].create({ + "name": item['name'], + "code": item['code'], + "remark": item['remark'], + }) + else: + brand.write({ + "name": item['name'], + "code": item['code'], + "remark": item['remark'], + }) + print('同步每日夹头类型列表成功') + else: + raise ValidationError("认证未通过") + + # 定时同步所有夹头型号列表 + def sync_all_chuck_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 + r = requests.post(strUrl, json={}, data=None, headers=headers) + r = r.json() + result = json.loads(r['result']) + print('result:%s' % result) + if result['status'] == 1: + if result.get('mrs_chuck_model_all_list'): + for item in result['mrs_chuck_model_all_list']: + if item: + brand = self.env['sf.chuck.model'].search( + [("code", '=', item['code'])]) + if not brand: + self.env['sf.chuck.model'].create({ + "name": item['name'], + "code": item['code'], + "remark": item['remark'], + }) + else: + brand.write({ + "name": item['name'], + "code": item['code'], + "remark": item['remark'], + }) + print('同步夹头类型列表成功') + else: + raise ValidationError("认证未通过") From f95e04afc9cc6c31a450f827bbbfffe1f1b93a46 Mon Sep 17 00:00:00 2001 From: mgw <1392924357@qq.com> Date: Mon, 12 Jun 2023 09:24:33 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=88=80=E5=85=B7=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E6=96=B9=E6=B3=95=EF=BC=88cloud=20>>>=20sf=EF=BC=89=E5=9F=BA?= =?UTF-8?q?=E6=9C=AC=E5=AE=8C=E6=88=90=EF=BC=8C=E5=BE=85=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_mrs_connect/models/res_config_setting.py | 47 +- sf_mrs_connect/models/sync_common.py | 560 +++++++++++++++++++- 2 files changed, 599 insertions(+), 8 deletions(-) diff --git a/sf_mrs_connect/models/res_config_setting.py b/sf_mrs_connect/models/res_config_setting.py index da900e6a..a5422703 100644 --- a/sf_mrs_connect/models/res_config_setting.py +++ b/sf_mrs_connect/models/res_config_setting.py @@ -44,16 +44,13 @@ class ResConfigSettings(models.TransientModel): _logger.info("同步资源库刀具") # self.env['sf.production.process.parameter'].sync_all_production_process_parameter() # _logger.info("同步表面工艺参数") - _logger.info("同步功能刀具") - # self.env['sf.functional.cutting.tool'].sync_all_functional_cutting_tool() - _logger.info("同步功能刀具完成") _logger.info("定时同步每日功能刀具类型列表...") # self.env['sf.functional.cutting.tool.model'].sync_functional_cutting_tool_model() - _logger.info("同步功能刀具类型完成") - _logger.info("同步功能刀具类型...") + _logger.info("同步每日功能刀具类型完成") + _logger.info("同步所有功能刀具类型...") # self.env['sf.functional.cutting.tool.model'].sync_all_functional_cutting_tool_model() - _logger.info("同步功能刀具类型完成") - _logger.info("同步定时同步每日整体式刀具类型列表...") + _logger.info("同步所有功能刀具类型完成") + _logger.info("定时同步每日整体式刀具类型列表...") # self.env['sf.integral.cutting.tool'].sync_integral_cutting_tool() _logger.info("同步整体式刀具类型完成") _logger.info("同步每日刀片类型列表...") @@ -98,6 +95,42 @@ class ResConfigSettings(models.TransientModel): _logger.info("同步所有刀片列表...") self.env['sf.blade'].sync_all_blade() _logger.info("同步所有刀片完成") + _logger.info("同步每日刀杆列表...") + self.env['sf.cutter.bar'].sync_cutter_bar() + _logger.info("同步每日刀杆完成") + _logger.info("同步所有刀杆列表...") + self.env['sf.cutter.bar'].sync_all_cutter_bar() + _logger.info("同步所有刀杆完成") + _logger.info("同步每日刀盘列表...") + self.env['sf.cutter.pad'].sync_cutter_pad() + _logger.info("同步每日刀盘完成") + _logger.info("同步所有刀盘列表...") + self.env['sf.cutter.pad'].sync_all_cutter_pad() + _logger.info("同步所有刀盘完成") + _logger.info("同步每日刀柄列表...") + self.env['sf.handle'].sync_handle() + _logger.info("同步每日刀柄完成") + _logger.info("同步所有刀柄列表...") + self.env['sf.handle'].sync_all_handle() + _logger.info("同步所有刀柄完成") + _logger.info("同步每日夹头列表...") + self.env['sf.chuck'].sync_chuck() + _logger.info("同步每日夹头完成") + _logger.info("同步所有夹头列表...") + self.env['sf.chuck'].sync_all_chuck() + _logger.info("同步所有夹头完成") + _logger.info("同步每日整体式刀具列表...") + self.env['sf.integral.cutting.tool'].sync_integral_cutting_tool() + _logger.info("同步每日整体式刀具完成") + _logger.info("同步所有整体式刀具列表...") + self.env['sf.integral.cutting.tool'].sync_all_integral_cutting_tool() + _logger.info("同步所有整体式刀具完成") + _logger.info("同步每日同步功能刀具列表...") + self.env['sf.function.cutting.tool'].sync_function_cutting_tool() + _logger.info("同步每日功能刀具列表完成") + _logger.info("同步所有功能刀具列表...") + self.env['sf.function.cutting.tool'].sync_all_function_cutting_tool() + _logger.info("同步所有功能刀具列表完成") except Exception as e: _logger.info("捕获错误信息:%s" % e) diff --git a/sf_mrs_connect/models/sync_common.py b/sf_mrs_connect/models/sync_common.py index 82560332..02a73c45 100644 --- a/sf_mrs_connect/models/sync_common.py +++ b/sf_mrs_connect/models/sync_common.py @@ -1742,6 +1742,11 @@ class SyncCutterBar(models.Model): if result['status'] == 1: if result.get('mrs_cutter_bar_yesterday_list'): for item in result['mrs_cutter_bar_yesterday_list']: + blade_list = [] + if item.get('blade'): + for i in item.get('blade'): + blade_list.append(self.env['sf.blade'].search( + [("code", '=', i)]).id) if item: brand = self.env['sf.cutter.bar'].search( [("code", '=', item['code'])]) @@ -1760,7 +1765,7 @@ class SyncCutterBar(models.Model): [("materials_no", '=', item['material_model'])]).id, "blade_number": item['blade_number'], "d_diameter": item['d_diameter'], - "blade": item['blade'], + "blade": blade_list, "wrench": item['wrench'], "screw": item['screw'], "radius": item['radius'], @@ -1769,8 +1774,106 @@ class SyncCutterBar(models.Model): "scope": item['scope'], "image": item['image'], }) + else: + brand.write({ + "code": item['code'], + "name": item['name'], + "cutter_bar_model_number": self.env['sf.cutter.bar'].search( + [("code", '=', item['cutter_bar_model_number'])]).id, + "brand": self.env['sf.machine.brand'].search( + [("code", '=', item['brand'])]).id, + "c_diameter": item['c_diameter'], + "total_length": item['total_length'], + "material_model": self.env['sf.materials.model'].search( + [("materials_no", '=', item['material_model'])]).id, + "blade_number": item['blade_number'], + "d_diameter": item['d_diameter'], + "blade": blade_list, + "wrench": item['wrench'], + "screw": item['screw'], + "radius": item['radius'], + "accuracy": item['accuracy'], + "hardness": item['hardness'], + "scope": item['scope'], + "image": item['image'], + }) + print('同步昨日刀杆列表成功') + else: + raise ValidationError("认证未通过") + # 定时同步每日刀杆列表 + def sync_cutter_bar_today(self): + sf_sync_config = self.env['res.config.settings'].get_values() + token = sf_sync_config['token'] + sf_secret_key = sf_sync_config['sf_secret_key'] + headers = Common.get_headers(self, token, sf_secret_key) + strUrl = sf_sync_config['sf_url'] + self.url + r = requests.post(strUrl, json={}, data=None, headers=headers) + r = r.json() + result = json.loads(r['result']) + print('result:%s' % result) + if result['status'] == 1: + if result.get('mrs_cutter_bar_today_list'): + for item in result['mrs_cutter_bar_today_list']: + blade_list = [] + if item.get('blade'): + for i in item.get('blade'): + blade_list.append(self.env['sf.blade'].search( + [("code", '=', i)]).id) + if item: + brand = self.env['sf.cutter.bar'].search( + [("code", '=', item['code'])]) + if not brand: + # code, name, cutter_bar_model_number, brand, c_diameter, total_length, material_model, blade_number, d_diameter, blade, wrench, screw, radius, accuracy, hardness, scope, image + self.env['sf.cutter.bar'].create({ + "code": item['code'], + "name": item['name'], + "cutter_bar_model_number": self.env['sf.cutter.bar'].search( + [("code", '=', item['cutter_bar_model_number'])]).id, + "brand": self.env['sf.machine.brand'].search( + [("code", '=', item['brand'])]).id, + "c_diameter": item['c_diameter'], + "total_length": item['total_length'], + "material_model": self.env['sf.materials.model'].search( + [("materials_no", '=', item['material_model'])]).id, + "blade_number": item['blade_number'], + "d_diameter": item['d_diameter'], + "blade": blade_list, + "wrench": item['wrench'], + "screw": item['screw'], + "radius": item['radius'], + "accuracy": item['accuracy'], + "hardness": item['hardness'], + "scope": item['scope'], + "image": item['image'], + }) + else: + brand.write({ + "code": item['code'], + "name": item['name'], + "cutter_bar_model_number": self.env['sf.cutter.bar'].search( + [("code", '=', item['cutter_bar_model_number'])]).id, + "brand": self.env['sf.machine.brand'].search( + [("code", '=', item['brand'])]).id, + "c_diameter": item['c_diameter'], + "total_length": item['total_length'], + "material_model": self.env['sf.materials.model'].search( + [("materials_no", '=', item['material_model'])]).id, + "blade_number": item['blade_number'], + "d_diameter": item['d_diameter'], + "blade": blade_list, + "wrench": item['wrench'], + "screw": item['screw'], + "radius": item['radius'], + "accuracy": item['accuracy'], + "hardness": item['hardness'], + "scope": item['scope'], + "image": item['image'], + }) + print('同步今日刀杆列表成功') + else: + raise ValidationError("认证未通过") # 同步刀杆类型列表 @@ -1850,6 +1953,163 @@ class SyncCutterBarModel(models.Model): # 同步刀盘列表 +class SyncCutterPad(models.Model): + _inherit = 'sf.cutter.pad' + _description = '同步刀盘列表' + + url = '/api/mrs_cutter_pad/list' + + # 定时同步每日刀盘列表 + def sync_cutter_pad(self): + sf_sync_config = self.env['res.config.settings'].get_values() + token = sf_sync_config['token'] + sf_secret_key = sf_sync_config['sf_secret_key'] + headers = Common.get_headers(self, token, sf_secret_key) + + strUrl = sf_sync_config['sf_url'] + self.url + r = requests.post(strUrl, json={}, data=None, headers=headers) + r = r.json() + result = json.loads(r['result']) + print('result:%s' % result) + if result['status'] == 1: + if result.get('mrs_cutter_pad_yesterday_list'): + for item in result['mrs_cutter_pad_yesterday_list']: + blade_list = [] + if item.get('blade'): + for i in item.get('blade'): + blade_list.append(self.env['sf.blade'].search( + [("code", '=', i)]).id) + if item: + brand = self.env['sf.cutter.pad'].search( + [("code", '=', item['code'])]) + if not brand: + # 'code', 'name', 'cutter_pad_model_number', 'brand', 'c_diameter', 'total_length', 'material_model', 'blade_number', 'd_diameter', 'blade', 'wrench', 'screw', 'radius', 'accuracy', 'hardness', 'scope', 'image' + self.env['sf.cutter.pad'].create({ + "name": item['name'], + "code": item['code'], + "cutter_pad_model_number": self.env['sf.cutter.bar.model'].search( + [("code", '=', item['cutter_pad_model_number'])]).id, + "brand": self.env['sf.brand'].search( + [("code", '=', item['brand'])]).id, + "c_diameter": item['c_diameter'], + "total_length": item['total_length'], + "material_model": self.env['sf.material.model'].search( + [("materials_no", '=', item['material_model'])]).id, + "blade_number": item['blade_number'], + "d_diameter": item['d_diameter'], + # "blade": [(6, 0, blade_list)], + "blade": blade_list, + "wrench": item['wrench'], + "screw": item['screw'], + "radius": item['radius'], + "accuracy": item['accuracy'], + "hardness": item['hardness'], + "scope": item['scope'], + "image": item['image'], + }) + else: + brand.write({ + "name": item['name'], + "code": item['code'], + "cutter_pad_model_number": self.env['sf.cutter.bar.model'].search( + [("code", '=', item['cutter_pad_model_number'])]).id, + "brand": self.env['sf.brand'].search( + [("code", '=', item['brand'])]).id, + "c_diameter": item['c_diameter'], + "total_length": item['total_length'], + "material_model": self.env['sf.material.model'].search( + [("materials_no", '=', item['material_model'])]).id, + "blade_number": item['blade_number'], + "d_diameter": item['d_diameter'], + # "blade": [(6, 0, blade_list)], + "blade": blade_list, + "wrench": item['wrench'], + "screw": item['screw'], + "radius": item['radius'], + "accuracy": item['accuracy'], + "hardness": item['hardness'], + "scope": item['scope'], + "image": item['image'], + }) + print('同步每日刀盘列表成功') + else: + raise ValidationError("认证未通过") + + # 定时同步所有刀盘列表 + def sync_cutter_pad_all(self): + sf_sync_config = self.env['res.config.settings'].get_values() + token = sf_sync_config['token'] + sf_secret_key = sf_sync_config['sf_secret_key'] + headers = Common.get_headers(self, token, sf_secret_key) + + strUrl = sf_sync_config['sf_url'] + self.url + r = requests.post(strUrl, json={}, data=None, headers=headers) + r = r.json() + result = json.loads(r['result']) + print('result:%s' % result) + if result['status'] == 1: + if result.get('mrs_cutter_pad_all_list'): + for item in result['mrs_cutter_pad_all_list']: + blade_list = [] + if item.get('blade'): + for i in item.get('blade'): + blade_list.append(self.env['sf.blade'].search( + [("code", '=', i)]).id) + if item: + brand = self.env['sf.cutter.pad'].search( + [("code", '=', item['code'])]) + if not brand: + # 'code', 'name', 'cutter_pad_model_number', 'brand', 'c_diameter', 'total_length', 'material_model', 'blade_number', 'd_diameter', 'blade', 'wrench', 'screw', 'radius', 'accuracy', 'hardness', 'scope', 'image' + self.env['sf.cutter.pad'].create({ + "name": item['name'], + "code": item['code'], + "cutter_pad_model_number": self.env['sf.cutter.bar.model'].search( + [("code", '=', item['cutter_pad_model_number'])]).id, + "brand": self.env['sf.brand'].search( + [("code", '=', item['brand'])]).id, + "c_diameter": item['c_diameter'], + "total_length": item['total_length'], + "material_model": self.env['sf.material.model'].search( + [("materials_no", '=', item['material_model'])]).id, + "blade_number": item['blade_number'], + "d_diameter": item['d_diameter'], + # "blade": [(6, 0, blade_list)], + "blade": blade_list, + "wrench": item['wrench'], + "screw": item['screw'], + "radius": item['radius'], + "accuracy": item['accuracy'], + "hardness": item['hardness'], + "scope": item['scope'], + "image": item['image'], + }) + else: + brand.write({ + "name": item['name'], + "code": item['code'], + "cutter_pad_model_number": self.env['sf.cutter.bar.model'].search( + [("code", '=', item['cutter_pad_model_number'])]).id, + "brand": self.env['sf.brand'].search( + [("code", '=', item['brand'])]).id, + "c_diameter": item['c_diameter'], + "total_length": item['total_length'], + "material_model": self.env['sf.material.model'].search( + [("materials_no", '=', item['material_model'])]).id, + "blade_number": item['blade_number'], + "d_diameter": item['d_diameter'], + # "blade": [(6, 0, blade_list)], + "blade": blade_list, + "wrench": item['wrench'], + "screw": item['screw'], + "radius": item['radius'], + "accuracy": item['accuracy'], + "hardness": item['hardness'], + "scope": item['scope'], + "image": item['image'], + }) + print('同步所有刀盘列表成功') + else: + raise ValidationError("认证未通过") # 同步刀盘类型列表 @@ -1929,6 +2189,163 @@ class SyncCutterPadModel(models.Model): # 同步刀柄列表 +class SyncHandle(models.Model): + _inherit = 'sf.handle' + _description = '同步刀柄列表' + + url = '/api/mrs_handle/list' + + # 定时同步每日刀柄列表 + def sync_handle(self): + sf_sync_config = self.env['res.config.settings'].get_values() + token = sf_sync_config['token'] + sf_secret_key = sf_sync_config['sf_secret_key'] + headers = Common.get_headers(self, token, sf_secret_key) + + strUrl = sf_sync_config['sf_url'] + self.url + r = requests.post(strUrl, json={}, data=None, headers=headers) + r = r.json() + result = json.loads(r['result']) + print('result:%s' % result) + if result['status'] == 1: + if result.get('mrs_handle_yesterday_list'): + for item in result['mrs_handle_yesterday_list']: + chuck_list = [] + if item.get('chuck_model'): + for chuck in item.get('chuck_model'): + chuck_list.append(self.env['sf.chuck'].search( + [("code", '=', chuck)]).id) + if item: + brand = self.env['sf.handle'].search( + [("code", '=', item['code'])]) + if not brand: + # code, name, handle_model_number, brand, length, length1, diameter1, weight, material_model, body_accuracy, nut, chuck_model, clamping_range, detection_accuracy, detection_hardness, standard_speed, image + self.env['sf.handle'].create({ + "name": item['name'], + "code": item['code'], + "handle_model_number": self.env['sf.handle.model'].search( + [("code", '=', item['handle_model_number'])]).id, + "brand": self.env['sf.brand'].search( + [("code", '=', item['brand'])]).id, + "length": item['length'], + "length1": item['length1'], + "diameter1": item['diameter1'], + "weight": item['weight'], + "material_model": self.env['sf.material.model'].search( + [("materials_no", '=', item['material_model'])]).id, + "body_accuracy": item['body_accuracy'], + "nut": item['nut'], + # "chuck_model": [(6, 0, chuck_list)], + "chuck_model": chuck_list, + "clamping_range": item['clamping_range'], + "detection_accuracy": item['detection_accuracy'], + "detection_hardness": item['detection_hardness'], + "standard_speed": item['standard_speed'], + "image": item['image'], + }) + else: + brand.write({ + "name": item['name'], + "code": item['code'], + "handle_model_number": self.env['sf.handle.model'].search( + [("code", '=', item['handle_model_number'])]).id, + "brand": self.env['sf.brand'].search( + [("code", '=', item['brand'])]).id, + "length": item['length'], + "length1": item['length1'], + "diameter1": item['diameter1'], + "weight": item['weight'], + "material_model": self.env['sf.material.model'].search( + [("materials_no", '=', item['material_model'])]).id, + "body_accuracy": item['body_accuracy'], + "nut": item['nut'], + # "chuck_model": [(6, 0, chuck_list)], + "chuck_model": chuck_list, + "clamping_range": item['clamping_range'], + "detection_accuracy": item['detection_accuracy'], + "detection_hardness": item['detection_hardness'], + "standard_speed": item['standard_speed'], + "image": item['image'], + }) + print('同步昨日刀柄列表成功') + else: + raise ValidationError("认证未通过") + + # 同步所有刀柄列表 + def sync_handle_all(self): + sf_sync_config = self.env['res.config.settings'].get_values() + token = sf_sync_config['token'] + sf_secret_key = sf_sync_config['sf_secret_key'] + headers = Common.get_headers(self, token, sf_secret_key) + + strUrl = sf_sync_config['sf_url'] + self.url + r = requests.post(strUrl, json={}, data=None, headers=headers) + r = r.json() + result = json.loads(r['result']) + print('result:%s' % result) + if result['status'] == 1: + if result.get('mrs_handle_list'): + for item in result['mrs_handle_list']: + chuck_list = [] + if item.get('chuck_model'): + for chuck in item.get('chuck_model'): + chuck_list.append(self.env['sf.chuck'].search( + [("code", '=', chuck)]).id) + if item: + brand = self.env['sf.handle'].search( + [("code", '=', item['code'])]) + if not brand: + # code, name, handle_model_number, brand, length, length1, diameter1, weight, material_model, body_accuracy, nut, chuck_model, clamping_range, detection_accuracy, detection_hardness, standard_speed, image + self.env['sf.handle'].create({ + "name": item['name'], + "code": item['code'], + "handle_model_number": self.env['sf.handle.model'].search( + [("code", '=', item['handle_model_number'])]).id, + "brand": self.env['sf.brand'].search( + [("code", '=', item['brand'])]).id, + "length": item['length'], + "length1": item['length1'], + "diameter1": item['diameter1'], + "weight": item['weight'], + "material_model": self.env['sf.material.model'].search( + [("materials_no", '=', item['material_model'])]).id, + "body_accuracy": item['body_accuracy'], + "nut": item['nut'], + # "chuck_model": [(6, 0, chuck_list)], + "chuck_model": chuck_list, + "clamping_range": item['clamping_range'], + "detection_accuracy": item['detection_accuracy'], + "detection_hardness": item['detection_hardness'], + "standard_speed": item['standard_speed'], + "image": item['image'], + }) + else: + brand.write({ + "name": item['name'], + "code": item['code'], + "handle_model_number": self.env['sf.handle.model'].search( + [("code", '=', item['handle_model_number'])]).id, + "brand": self.env['sf.brand'].search( + [("code", '=', item['brand'])]).id, + "length": item['length'], + "length1": item['length1'], + "diameter1": item['diameter1'], + "weight": item['weight'], + "material_model": self.env['sf.material.model'].search( + [("materials_no", '=', item['material_model'])]).id, + "body_accuracy": item['body_accuracy'], + "nut": item['nut'], + # "chuck_model": [(6, 0, chuck_list)], + "chuck_model": chuck_list, + "clamping_range": item['clamping_range'], + "detection_accuracy": item['detection_accuracy'], + "detection_hardness": item['detection_hardness'], + "standard_speed": item['standard_speed'], + "image": item['image'], + }) + print('同步所有刀柄列表成功') + else: + raise ValidationError("认证未通过") # 同步刀柄类型列表 @@ -2008,6 +2425,147 @@ class SyncHandleModel(models.Model): # 同步夹头型号列表 +class SyncChuck(models.Model): + _inherit = 'sf.chuck' + _description = '同步夹头型号列表' + + url = '/api/mrs_chuck/list' + + # 定时同步每日夹头型号列表 + def sync_chuck(self): + sf_sync_config = self.env['res.config.settings'].get_values() + token = sf_sync_config['token'] + sf_secret_key = sf_sync_config['sf_secret_key'] + headers = Common.get_headers(self, token, sf_secret_key) + + strUrl = sf_sync_config['sf_url'] + self.url + r = requests.post(strUrl, json={}, data=None, headers=headers) + r = r.json() + result = json.loads(r['result']) + print('result:%s' % result) + if result['status'] == 1: + if result.get('mrs_chuck_yesterday_list'): + for item in result['mrs_chuck_yesterday_list']: + handle_model_list = [] + if item.get('handle_model'): + for handle_model in item['handle_model']: + handle_model_list.append(self.env['sf.handle.model'].search( + [("code", '=', handle_model)]).id) + if item: + brand = self.env['sf.chuck'].search( + [("code", '=', item['code'])]) + if not brand: + # code, name, chuck_model_number, brand, accuracy, diameter, inner_diameter, height, material_model, nut, handle_model, clamping_range, feature, image + self.env['sf.chuck'].create({ + "code": item['code'], + "name": item['name'], + "chuck_model_number": self.env['sf.chuck.model'].search( + [("code", '=', item['chuck_model_number'])]).id, + "brand": self.env['sf.brand'].search( + [("code", '=', item['brand'])]).id, + "accuracy": item['accuracy'], + "diameter": item['diameter'], + "inner_diameter": item['inner_diameter'], + "height": item['height'], + "material_model": self.env['sf.material.model'].search( + "materials_no", '=', item['material_model']).id, + "nut": item['nut'], + "handle_model": handle_model_list, + "clamping_range": item['clamping_range'], + "feature": item['feature'], + "image": item['image'], + }) + else: + brand.write({ + "code": item['code'], + "name": item['name'], + "chuck_model_number": self.env['sf.chuck.model'].search( + [("code", '=', item['chuck_model_number'])]).id, + "brand": self.env['sf.brand'].search( + [("code", '=', item['brand'])]).id, + "accuracy": item['accuracy'], + "diameter": item['diameter'], + "inner_diameter": item['inner_diameter'], + "height": item['height'], + "material_model": self.env['sf.material.model'].search( + "materials_no", '=', item['material_model']).id, + "nut": item['nut'], + "handle_model": handle_model_list, + "clamping_range": item['clamping_range'], + "feature": item['feature'], + "image": item['image'], + }) + print('同步每日夹头型号列表成功') + else: + raise ValidationError("认证未通过") + + # 同步所有夹头型号列表 + def sync_all_chuck(self): + sf_sync_config = self.env['res.config.settings'].get_values() + token = sf_sync_config['token'] + sf_secret_key = sf_sync_config['sf_secret_key'] + headers = Common.get_headers(self, token, sf_secret_key) + + strUrl = sf_sync_config['sf_url'] + self.url + r = requests.post(strUrl, json={}, data=None, headers=headers) + r = r.json() + result = json.loads(r['result']) + print('result:%s' % result) + if result['status'] == 1: + if result.get('mrs_chuck_all_list'): + for item in result['mrs_chuck_all_list']: + handle_model_list = [] + if item.get('handle_model'): + for handle_model in item['handle_model']: + handle_model_list.append(self.env['sf.handle.model'].search( + [("code", '=', handle_model)]).id) + if item: + brand = self.env['sf.chuck'].search( + [("code", '=', item['code'])]) + if not brand: + # code, name, chuck_model_number, brand, accuracy, diameter, inner_diameter, height, material_model, nut, handle_model, clamping_range, feature, image + self.env['sf.chuck'].create({ + "code": item['code'], + "name": item['name'], + "chuck_model_number": self.env['sf.chuck.model'].search( + [("code", '=', item['chuck_model_number'])]).id, + "brand": self.env['sf.brand'].search( + [("code", '=', item['brand'])]).id, + "accuracy": item['accuracy'], + "diameter": item['diameter'], + "inner_diameter": item['inner_diameter'], + "height": item['height'], + "material_model": self.env['sf.material.model'].search( + "materials_no", '=', item['material_model']).id, + "nut": item['nut'], + "handle_model": handle_model_list, + "clamping_range": item['clamping_range'], + "feature": item['feature'], + "image": item['image'], + }) + else: + brand.write({ + "code": item['code'], + "name": item['name'], + "chuck_model_number": self.env['sf.chuck.model'].search( + [("code", '=', item['chuck_model_number'])]).id, + "brand": self.env['sf.brand'].search( + [("code", '=', item['brand'])]).id, + "accuracy": item['accuracy'], + "diameter": item['diameter'], + "inner_diameter": item['inner_diameter'], + "height": item['height'], + "material_model": self.env['sf.material.model'].search( + "materials_no", '=', item['material_model']).id, + "nut": item['nut'], + "handle_model": handle_model_list, + "clamping_range": item['clamping_range'], + "feature": item['feature'], + "image": item['image'], + }) + print('同步所有夹头型号列表成功') + else: + raise ValidationError("认证未通过") # 同步夹头类型列表 From a1678f76c25030a1604e7b592003dfb565e3ee1e Mon Sep 17 00:00:00 2001 From: mgw <1392924357@qq.com> Date: Mon, 12 Jun 2023 13:17:52 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E5=9F=BA=E6=9C=AC=E5=AE=8C=E6=88=90=EF=BC=8C=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_base/__manifest__.py | 11 +- sf_base/models/tool_base.py | 12 +- sf_base/static/src/scss/format_img.scss | 22 ++ sf_mrs_connect/models/res_config_setting.py | 4 +- sf_mrs_connect/models/sync_common.py | 287 +++++++++++++++----- 5 files changed, 252 insertions(+), 84 deletions(-) create mode 100644 sf_base/static/src/scss/format_img.scss diff --git a/sf_base/__manifest__.py b/sf_base/__manifest__.py index 045692f4..21f4d41d 100644 --- a/sf_base/__manifest__.py +++ b/sf_base/__manifest__.py @@ -23,8 +23,15 @@ ], 'demo': [ ], - 'qweb': [ - ], + 'assets': { + + 'web.assets_qweb': [ + ], + 'web.assets_backend': [ + 'sf_base/static/src/scss/format_img.scss', + ], + + }, 'license': 'LGPL-3', 'installable': True, 'application': False, diff --git a/sf_base/models/tool_base.py b/sf_base/models/tool_base.py index 6f8c7a1f..b41a1075 100644 --- a/sf_base/models/tool_base.py +++ b/sf_base/models/tool_base.py @@ -65,7 +65,7 @@ class IntegralCuttingTool(models.Model): front_angle = fields.Float('前角(°)') rear_angle = fields.Float('后角(°)') main_included_angle = fields.Float('主偏角(°)') - material_model = fields.Many2one('sf.production.materials', '材料型号') + material_model = fields.Many2one('sf.materials.model', '材料型号') nut = fields.Float('配对螺母(mm)') # 适用夹头型号可以多选 chuck_model = fields.Many2many('sf.chuck', string='适用夹头型号') @@ -102,7 +102,7 @@ class Blade(models.Model): rear_angle = fields.Float('后角(°)') main_included_angle = fields.Float('主偏角(°)') r_angle = fields.Float('R角(°)') - material_model = fields.Many2one('sf.production.materials', '材料型号') + material_model = fields.Many2one('sf.materials.model', '材料型号') hardness = fields.Char('加工硬度') nut = fields.Float('配对螺母(mm)') # 适用刀杆型号可以多选 @@ -138,7 +138,7 @@ class CutterBar(models.Model): brand = fields.Many2one('sf.machine.brand', '品牌') c_diameter = fields.Float('C柄径(mm)') total_length = fields.Float('L总长(mm)') - material_model = fields.Many2one('sf.production.materials', '材料型号') + material_model = fields.Many2one('sf.materials.model', '材料型号') blade_number = fields.Integer('刃数') d_diameter = fields.Float('D刃径(mm)') blade = fields.Many2many('sf.blade', string='适用刀片型号') @@ -174,7 +174,7 @@ class CutterPad(models.Model): brand = fields.Many2one('sf.machine.brand', '品牌') c_diameter = fields.Float('C柄径(mm)') total_length = fields.Float('L总长(mm)') - material_model = fields.Many2one('sf.production.materials', '材料型号') + material_model = fields.Many2one('sf.materials.model', '材料型号') blade_number = fields.Integer('刃数') d_diameter = fields.Float('D刃径(mm)') blade = fields.Many2many('sf.blade', string='适用刀片型号') @@ -212,7 +212,7 @@ class Handle(models.Model): length1 = fields.Float('L1(mm)') diameter1 = fields.Float('D1(mm)') weight = fields.Float('重量(kg)') - material_model = fields.Many2one('sf.production.materials', '材料型号') + material_model = fields.Many2one('sf.materials.model', '材料型号') body_accuracy = fields.Float('本体精度(mm)') nut = fields.Float('配对螺母(mm)') chuck_model = fields.Many2many('sf.chuck.model', string='适用夹头型号') @@ -248,7 +248,7 @@ class Chuck(models.Model): diameter = fields.Float('外径(mm)') inner_diameter = fields.Float('内径(mm)') height = fields.Float('高度(mm)') - material_model = fields.Many2one('sf.production.materials', '材料型号') + material_model = fields.Many2one('sf.materials.model', '材料型号') nut = fields.Float('配对螺母(mm)') handle_model = fields.Many2many('sf.handle.model', string='适用刀柄型号') clamping_range = fields.Float('夹持范围(mm)') diff --git a/sf_base/static/src/scss/format_img.scss b/sf_base/static/src/scss/format_img.scss new file mode 100644 index 00000000..97b0975f --- /dev/null +++ b/sf_base/static/src/scss/format_img.scss @@ -0,0 +1,22 @@ +.o_data_row .w-100 { + width: 40px !important; + height: 40px !important; + display: block !important; +} + +.o_list_renderer .o_list_table tbody > tr > td:not(.o_list_record_selector):not(.o_handle_cell):not(.o_list_button):not(.o_list_record_remove) { + vertical-align: middle !important; +} + +.o_list_record_selector { + vertical-align: middle; +} + +.img-fluid { + max-width: unset !important; +} + +.o_inner_group .img-fluid { + width: 133px !important; + height: 133px !important; +} \ No newline at end of file diff --git a/sf_mrs_connect/models/res_config_setting.py b/sf_mrs_connect/models/res_config_setting.py index a5422703..b32aef57 100644 --- a/sf_mrs_connect/models/res_config_setting.py +++ b/sf_mrs_connect/models/res_config_setting.py @@ -126,10 +126,10 @@ class ResConfigSettings(models.TransientModel): self.env['sf.integral.cutting.tool'].sync_all_integral_cutting_tool() _logger.info("同步所有整体式刀具完成") _logger.info("同步每日同步功能刀具列表...") - self.env['sf.function.cutting.tool'].sync_function_cutting_tool() + self.env['sf.functional.cutting.tool'].sync_functional_cutting_tool() _logger.info("同步每日功能刀具列表完成") _logger.info("同步所有功能刀具列表...") - self.env['sf.function.cutting.tool'].sync_all_function_cutting_tool() + self.env['sf.functional.cutting.tool'].sync_all_functional_cutting_tool() _logger.info("同步所有功能刀具列表完成") except Exception as e: diff --git a/sf_mrs_connect/models/sync_common.py b/sf_mrs_connect/models/sync_common.py index 02a73c45..0bafad65 100644 --- a/sf_mrs_connect/models/sync_common.py +++ b/sf_mrs_connect/models/sync_common.py @@ -1112,12 +1112,16 @@ class sfSyncFunctional_cutting_tool(models.Model): if item: brand = self.env['sf.functional.cutting.tool'].search( [("code", '=', item['code'])]) + if item.get('image'): + image = item['image'].encode('utf-8') + else: + image = '' if not brand: self.env['sf.functional.cutting.tool'].create({ "name": item['name'], "code": item['code'], # 功能刀具类型 - "functional_model_number": self.env['sf.functiona`l.cutting.tool.model'].search( + "functional_model_number": self.env['sf.functional.cutting.tool.model'].search( [('code', '=', item['functional_model_number'])]).id, # 整体刀具型号 "integral_model_number": self.env['sf.integral.cutting.tool'].search( @@ -1147,7 +1151,7 @@ class sfSyncFunctional_cutting_tool(models.Model): "max_life": item['max_life'], "is_standard": item['is_standard'], "applicable_range": item['applicable_range'], - "image": item['image'], + "image": image, }) else: @@ -1185,7 +1189,7 @@ class sfSyncFunctional_cutting_tool(models.Model): "max_life": item['max_life'], "is_standard": item['is_standard'], "applicable_range": item['applicable_range'], - "image": item['image'], + "image": image, }) else: @@ -1209,6 +1213,10 @@ class sfSyncFunctional_cutting_tool(models.Model): if item: brand = self.env['sf.functional.cutting.tool'].search( [("code", '=', item['code'])]) + if item.get('image'): + image = item['image'].encode('utf-8') + else: + image = '' if not brand: self.env['sf.functional.cutting.tool'].create({ "name": item['name'], @@ -1244,9 +1252,46 @@ class sfSyncFunctional_cutting_tool(models.Model): "max_life": item['max_life'], "is_standard": item['is_standard'], "applicable_range": item['applicable_range'], - "image": item['image'], + "image": image, }) + else: + brand.write({ + "name": item['name'], + "code": item['code'], + # 功能刀具类型 + "functional_model_number": self.env['sf.functional.cutting.tool.model'].search( + [('code', '=', item['functional_model_number'])]).id, + # 整体刀具型号 + "integral_model_number": self.env['sf.integral.cutting.tool'].search( + [('code', '=', item['integral_model_number'])]).id, + # 刀片型号 + "blade_model_number": self.env['sf.blade'].search( + [('code', '=', item['blade_model_number'])]).id, + # 刀杆型号 + "cutterbar_model_number": self.env['sf.cutter.bar'].search( + [('code', '=', item['cutterbar_model_number'])]).id, + # 刀盘型号 + "cutterpad_model_number": self.env['sf.cutter.pad'].search( + [('code', '=', item['cutterpad_model_number'])]).id, + # 刀柄型号 + "handle_model_number": self.env['sf.handle'].search( + [('code', '=', item['handle_model_number'])]).id, + # 夹头型号 + "chuck_model_number": self.env['sf.chuck'].search( + [('code', '=', item['chuck_model_number'])]).id, + "diameter": item['diameter'], + "tool_grade": item['tool_grade'], + "machining_accuracy": item['machining_accuracy'], + "tool_length": item['tool_length'], + "blade_number": item['blade_number'], + "integral_blade_length": item['integral_blade_length'], + "effective_blade_length": item['effective_blade_length'], + "max_life": item['max_life'], + "is_standard": item['is_standard'], + "applicable_range": item['applicable_range'], + "image": image, + }) else: raise ValidationError("认证未通过") @@ -1354,6 +1399,10 @@ class SyncIntegralCuttingTool(models.Model): if item: brand = self.env['sf.integral.cutting.tool'].search( [("code", '=', item['code'])]) + if item.get('image'): + image = item['image'].encode('utf-8') + else: + image = '' if not brand: self.env['sf.integral.cutting.tool'].create({ # code, name, integral_model_number, brand, total_length, shank_length, blade_length, diameter, blade_number, front_angle, rear_angle, main_included_angle, material_model, nut, chuck_model, scope, image, create_uid, create_date @@ -1361,7 +1410,7 @@ class SyncIntegralCuttingTool(models.Model): "code": item['code'], "integral_model_number": self.env['sf.integral.cutting.tool.model'].search( [("code", '=', item['integral_model_number'])]).id, - "brand": self.env['sf.brand'].search( + "brand": self.env['sf.machine.brand'].search( [("code", '=', item['brand'])]).id, "total_length": item['total_length'], "shank_length": item['shank_length'], @@ -1371,12 +1420,35 @@ class SyncIntegralCuttingTool(models.Model): "front_angle": item['front_angle'], "rear_angle": item['rear_angle'], "main_included_angle": item['main_included_angle'], - "material_model": self.env['sf.material.model'].search( - [("code", '=', item['material_model'])]).id, + "material_model": self.env['sf.materials.model'].search( + [("materials_no", '=', item['material_model'])]).id, "nut": item['nut'], "chuck_model": chuck_list, "scope": item['scope'], - "image": item['image'], + "image": image, + }) + else: + brand.write({ + "name": item['name'], + "code": item['code'], + "integral_model_number": self.env['sf.integral.cutting.tool.model'].search( + [("code", '=', item['integral_model_number'])]).id, + "brand": self.env['sf.machine.brand'].search( + [("code", '=', item['brand'])]).id, + "total_length": item['total_length'], + "shank_length": item['shank_length'], + "blade_length": item['blade_length'], + "diameter": item['diameter'], + "blade_number": item['blade_number'], + "front_angle": item['front_angle'], + "rear_angle": item['rear_angle'], + "main_included_angle": item['main_included_angle'], + "material_model": self.env['sf.materials.model'].search( + [("materials_no", '=', item['material_model'])]).id, + "nut": item['nut'], + "chuck_model": chuck_list, + "scope": item['scope'], + "image": image, }) else: raise ValidationError("认证未通过") @@ -1404,6 +1476,10 @@ class SyncIntegralCuttingTool(models.Model): if item: brand = self.env['sf.integral.cutting.tool'].search( [("code", '=', item['code'])]) + if item.get('image'): + image = item['image'].encode('utf-8') + else: + image = '' if not brand: self.env['sf.integral.cutting.tool'].create({ # code, name, integral_model_number, brand, total_length, shank_length, blade_length, diameter, blade_number, front_angle, rear_angle, main_included_angle, material_model, nut, chuck_model, scope, image, create_uid, create_date @@ -1411,7 +1487,7 @@ class SyncIntegralCuttingTool(models.Model): "code": item['code'], "integral_model_number": self.env['sf.integral.cutting.tool.model'].search( [("code", '=', item['integral_model_number'])]).id, - "brand": self.env['sf.brand'].search( + "brand": self.env['sf.machine.brand'].search( [("code", '=', item['brand'])]).id, "total_length": item['total_length'], "shank_length": item['shank_length'], @@ -1421,12 +1497,35 @@ class SyncIntegralCuttingTool(models.Model): "front_angle": item['front_angle'], "rear_angle": item['rear_angle'], "main_included_angle": item['main_included_angle'], - "material_model": self.env['sf.material.model'].search( - [("code", '=', item['material_model'])]).id, + "material_model": self.env['sf.materials.model'].search( + [("materials_no", '=', item['material_model'])]).id, "nut": item['nut'], "chuck_model": chuck_list, "scope": item['scope'], - "image": item['image'], + "image": image, + }) + else: + brand.write({ + "name": item['name'], + "code": item['code'], + "integral_model_number": self.env['sf.integral.cutting.tool.model'].search( + [("code", '=', item['integral_model_number'])]).id, + "brand": self.env['sf.machine.brand'].search( + [("code", '=', item['brand'])]).id, + "total_length": item['total_length'], + "shank_length": item['shank_length'], + "blade_length": item['blade_length'], + "diameter": item['diameter'], + "blade_number": item['blade_number'], + "front_angle": item['front_angle'], + "rear_angle": item['rear_angle'], + "main_included_angle": item['main_included_angle'], + "material_model": self.env['sf.materials.model'].search( + [("materials_no", '=', item['material_model'])]).id, + "nut": item['nut'], + "chuck_model": chuck_list, + "scope": item['scope'], + "image": image, }) else: raise ValidationError("认证未通过") @@ -1519,6 +1618,10 @@ class SyncBlade(models.Model): # code, name, blade_model_number, brand, length, width, height, top_angle, front_angle, rear_angle, main_included_angle, r_angle, material_model, hardness, nut, cutter_bar, cutter_pad, radius, image, create_uid, create_date brand = self.env['sf.blade'].search( [("code", '=', item['code'])]) + if item.get('image'): + image = item['image'].encode('utf-8') + else: + image = '' if not brand: self.env['sf.blade'].create({ "name": item['name'], @@ -1542,7 +1645,7 @@ class SyncBlade(models.Model): "cutter_bar": item['cutter_bar'], "cutter_pad": item['cutter_pad'], "radius": item['radius'], - "image": item['image'].encode('utf-8'), + "image": image, }) else: brand.write({ @@ -1566,7 +1669,7 @@ class SyncBlade(models.Model): "cutter_bar": item['cutter_bar'], "cutter_pad": item['cutter_pad'], "radius": item['radius'], - "image": item['image'].encode('utf-8'), + "image": image, }) else: raise ValidationError("认证未通过") @@ -1586,11 +1689,15 @@ class SyncBlade(models.Model): if result['status'] == 1: if result.get('mrs_blade_all_list'): for item in result['mrs_blade_all_list']: - print('item_image:%s' % item['image'].encode('utf-8')) + # print('item_image:%s' % item['image'].encode('utf-8) if item: brand = self.env['sf.blade'].search( [("code", '=', item['code'])]) + if item.get('image'): + image = item['image'].encode('utf-8') + else: + image = '' if not brand: self.env['sf.blade'].create({ "name": item['name'], @@ -1614,7 +1721,7 @@ class SyncBlade(models.Model): "cutter_bar": item['cutter_bar'], "cutter_pad": item['cutter_pad'], "radius": item['radius'], - "image": item['image'].encode('utf-8'), + "image": image, }) else: brand.write({ @@ -1638,7 +1745,7 @@ class SyncBlade(models.Model): "cutter_bar": item['cutter_bar'], "cutter_pad": item['cutter_pad'], "radius": item['radius'], - "image": item['image'].encode('utf-8'), + "image": image, }) else: raise ValidationError("认证未通过") @@ -1750,6 +1857,10 @@ class SyncCutterBar(models.Model): if item: brand = self.env['sf.cutter.bar'].search( [("code", '=', item['code'])]) + if item.get('image'): + image = item['image'].encode('utf-8') + else: + image = '' if not brand: # code, name, cutter_bar_model_number, brand, c_diameter, total_length, material_model, blade_number, d_diameter, blade, wrench, screw, radius, accuracy, hardness, scope, image self.env['sf.cutter.bar'].create({ @@ -1772,7 +1883,7 @@ class SyncCutterBar(models.Model): "accuracy": item['accuracy'], "hardness": item['hardness'], "scope": item['scope'], - "image": item['image'], + "image": image, }) else: brand.write({ @@ -1795,14 +1906,14 @@ class SyncCutterBar(models.Model): "accuracy": item['accuracy'], "hardness": item['hardness'], "scope": item['scope'], - "image": item['image'], + "image": image, }) print('同步昨日刀杆列表成功') else: raise ValidationError("认证未通过") - # 定时同步每日刀杆列表 - def sync_cutter_bar_today(self): + # 同步所有刀杆列表 + def sync_all_cutter_bar(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'] @@ -1814,8 +1925,8 @@ class SyncCutterBar(models.Model): result = json.loads(r['result']) print('result:%s' % result) if result['status'] == 1: - if result.get('mrs_cutter_bar_today_list'): - for item in result['mrs_cutter_bar_today_list']: + if result.get('mrs_cutter_bar_all_list'): + for item in result['mrs_cutter_bar_all_list']: blade_list = [] if item.get('blade'): for i in item.get('blade'): @@ -1824,6 +1935,10 @@ class SyncCutterBar(models.Model): if item: brand = self.env['sf.cutter.bar'].search( [("code", '=', item['code'])]) + if item.get('image'): + image = item['image'].encode('utf-8') + else: + image = '' if not brand: # code, name, cutter_bar_model_number, brand, c_diameter, total_length, material_model, blade_number, d_diameter, blade, wrench, screw, radius, accuracy, hardness, scope, image self.env['sf.cutter.bar'].create({ @@ -1846,7 +1961,7 @@ class SyncCutterBar(models.Model): "accuracy": item['accuracy'], "hardness": item['hardness'], "scope": item['scope'], - "image": item['image'], + "image": image, }) else: brand.write({ @@ -1869,9 +1984,9 @@ class SyncCutterBar(models.Model): "accuracy": item['accuracy'], "hardness": item['hardness'], "scope": item['scope'], - "image": item['image'], + "image": image, }) - print('同步今日刀杆列表成功') + print('同步所有刀杆列表成功') else: raise ValidationError("认证未通过") @@ -1982,18 +2097,22 @@ class SyncCutterPad(models.Model): if item: brand = self.env['sf.cutter.pad'].search( [("code", '=', item['code'])]) + if item.get('image'): + image = item['image'].encode('utf-8') + else: + image = '' if not brand: # 'code', 'name', 'cutter_pad_model_number', 'brand', 'c_diameter', 'total_length', 'material_model', 'blade_number', 'd_diameter', 'blade', 'wrench', 'screw', 'radius', 'accuracy', 'hardness', 'scope', 'image' self.env['sf.cutter.pad'].create({ "name": item['name'], "code": item['code'], - "cutter_pad_model_number": self.env['sf.cutter.bar.model'].search( + "cutter_pad_model_number": self.env['sf.cutter.pad.model'].search( [("code", '=', item['cutter_pad_model_number'])]).id, - "brand": self.env['sf.brand'].search( + "brand": self.env['sf.machine.brand'].search( [("code", '=', item['brand'])]).id, "c_diameter": item['c_diameter'], "total_length": item['total_length'], - "material_model": self.env['sf.material.model'].search( + "material_model": self.env['sf.materials.model'].search( [("materials_no", '=', item['material_model'])]).id, "blade_number": item['blade_number'], "d_diameter": item['d_diameter'], @@ -2005,19 +2124,19 @@ class SyncCutterPad(models.Model): "accuracy": item['accuracy'], "hardness": item['hardness'], "scope": item['scope'], - "image": item['image'], + "image": image, }) else: brand.write({ "name": item['name'], "code": item['code'], - "cutter_pad_model_number": self.env['sf.cutter.bar.model'].search( + "cutter_pad_model_number": self.env['sf.cutter.pad.model'].search( [("code", '=', item['cutter_pad_model_number'])]).id, - "brand": self.env['sf.brand'].search( + "brand": self.env['sf.machine.brand'].search( [("code", '=', item['brand'])]).id, "c_diameter": item['c_diameter'], "total_length": item['total_length'], - "material_model": self.env['sf.material.model'].search( + "material_model": self.env['sf.materials.model'].search( [("materials_no", '=', item['material_model'])]).id, "blade_number": item['blade_number'], "d_diameter": item['d_diameter'], @@ -2029,14 +2148,14 @@ class SyncCutterPad(models.Model): "accuracy": item['accuracy'], "hardness": item['hardness'], "scope": item['scope'], - "image": item['image'], + "image": image, }) print('同步每日刀盘列表成功') else: raise ValidationError("认证未通过") # 定时同步所有刀盘列表 - def sync_cutter_pad_all(self): + def sync_all_cutter_pad(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'] @@ -2058,18 +2177,22 @@ class SyncCutterPad(models.Model): if item: brand = self.env['sf.cutter.pad'].search( [("code", '=', item['code'])]) + if item.get('image'): + image = item['image'].encode('utf-8') + else: + image = '' if not brand: # 'code', 'name', 'cutter_pad_model_number', 'brand', 'c_diameter', 'total_length', 'material_model', 'blade_number', 'd_diameter', 'blade', 'wrench', 'screw', 'radius', 'accuracy', 'hardness', 'scope', 'image' self.env['sf.cutter.pad'].create({ "name": item['name'], "code": item['code'], - "cutter_pad_model_number": self.env['sf.cutter.bar.model'].search( + "cutter_pad_model_number": self.env['sf.cutter.pad.model'].search( [("code", '=', item['cutter_pad_model_number'])]).id, - "brand": self.env['sf.brand'].search( + "brand": self.env['sf.machine.brand'].search( [("code", '=', item['brand'])]).id, "c_diameter": item['c_diameter'], "total_length": item['total_length'], - "material_model": self.env['sf.material.model'].search( + "material_model": self.env['sf.materials.model'].search( [("materials_no", '=', item['material_model'])]).id, "blade_number": item['blade_number'], "d_diameter": item['d_diameter'], @@ -2081,19 +2204,19 @@ class SyncCutterPad(models.Model): "accuracy": item['accuracy'], "hardness": item['hardness'], "scope": item['scope'], - "image": item['image'], + "image": image, }) else: brand.write({ "name": item['name'], "code": item['code'], - "cutter_pad_model_number": self.env['sf.cutter.bar.model'].search( + "cutter_pad_model_number": self.env['sf.cutter.pad.model'].search( [("code", '=', item['cutter_pad_model_number'])]).id, - "brand": self.env['sf.brand'].search( + "brand": self.env['sf.machine.brand'].search( [("code", '=', item['brand'])]).id, "c_diameter": item['c_diameter'], "total_length": item['total_length'], - "material_model": self.env['sf.material.model'].search( + "material_model": self.env['sf.materials.model'].search( [("materials_no", '=', item['material_model'])]).id, "blade_number": item['blade_number'], "d_diameter": item['d_diameter'], @@ -2105,7 +2228,7 @@ class SyncCutterPad(models.Model): "accuracy": item['accuracy'], "hardness": item['hardness'], "scope": item['scope'], - "image": item['image'], + "image": image, }) print('同步所有刀盘列表成功') else: @@ -2218,6 +2341,10 @@ class SyncHandle(models.Model): if item: brand = self.env['sf.handle'].search( [("code", '=', item['code'])]) + if item.get('image'): + image = item['image'].encode('utf-8') + else: + image = '' if not brand: # code, name, handle_model_number, brand, length, length1, diameter1, weight, material_model, body_accuracy, nut, chuck_model, clamping_range, detection_accuracy, detection_hardness, standard_speed, image self.env['sf.handle'].create({ @@ -2225,13 +2352,13 @@ class SyncHandle(models.Model): "code": item['code'], "handle_model_number": self.env['sf.handle.model'].search( [("code", '=', item['handle_model_number'])]).id, - "brand": self.env['sf.brand'].search( + "brand": self.env['sf.machine.brand'].search( [("code", '=', item['brand'])]).id, "length": item['length'], "length1": item['length1'], "diameter1": item['diameter1'], "weight": item['weight'], - "material_model": self.env['sf.material.model'].search( + "material_model": self.env['sf.materials.model'].search( [("materials_no", '=', item['material_model'])]).id, "body_accuracy": item['body_accuracy'], "nut": item['nut'], @@ -2241,7 +2368,7 @@ class SyncHandle(models.Model): "detection_accuracy": item['detection_accuracy'], "detection_hardness": item['detection_hardness'], "standard_speed": item['standard_speed'], - "image": item['image'], + "image": image, }) else: brand.write({ @@ -2249,13 +2376,13 @@ class SyncHandle(models.Model): "code": item['code'], "handle_model_number": self.env['sf.handle.model'].search( [("code", '=', item['handle_model_number'])]).id, - "brand": self.env['sf.brand'].search( + "brand": self.env['sf.machine.brand'].search( [("code", '=', item['brand'])]).id, "length": item['length'], "length1": item['length1'], "diameter1": item['diameter1'], "weight": item['weight'], - "material_model": self.env['sf.material.model'].search( + "material_model": self.env['sf.materials.model'].search( [("materials_no", '=', item['material_model'])]).id, "body_accuracy": item['body_accuracy'], "nut": item['nut'], @@ -2265,14 +2392,14 @@ class SyncHandle(models.Model): "detection_accuracy": item['detection_accuracy'], "detection_hardness": item['detection_hardness'], "standard_speed": item['standard_speed'], - "image": item['image'], + "image": image, }) print('同步昨日刀柄列表成功') else: raise ValidationError("认证未通过") # 同步所有刀柄列表 - def sync_handle_all(self): + def sync_all_handle(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'] @@ -2284,8 +2411,8 @@ class SyncHandle(models.Model): result = json.loads(r['result']) print('result:%s' % result) if result['status'] == 1: - if result.get('mrs_handle_list'): - for item in result['mrs_handle_list']: + if result.get('mrs_handle_all_list'): + for item in result['mrs_handle_all_list']: chuck_list = [] if item.get('chuck_model'): for chuck in item.get('chuck_model'): @@ -2294,6 +2421,10 @@ class SyncHandle(models.Model): if item: brand = self.env['sf.handle'].search( [("code", '=', item['code'])]) + if item.get('image'): + image = item['image'].encode('utf-8') + else: + image = '' if not brand: # code, name, handle_model_number, brand, length, length1, diameter1, weight, material_model, body_accuracy, nut, chuck_model, clamping_range, detection_accuracy, detection_hardness, standard_speed, image self.env['sf.handle'].create({ @@ -2301,13 +2432,13 @@ class SyncHandle(models.Model): "code": item['code'], "handle_model_number": self.env['sf.handle.model'].search( [("code", '=', item['handle_model_number'])]).id, - "brand": self.env['sf.brand'].search( + "brand": self.env['sf.machine.brand'].search( [("code", '=', item['brand'])]).id, "length": item['length'], "length1": item['length1'], "diameter1": item['diameter1'], "weight": item['weight'], - "material_model": self.env['sf.material.model'].search( + "material_model": self.env['sf.materials.model'].search( [("materials_no", '=', item['material_model'])]).id, "body_accuracy": item['body_accuracy'], "nut": item['nut'], @@ -2317,7 +2448,7 @@ class SyncHandle(models.Model): "detection_accuracy": item['detection_accuracy'], "detection_hardness": item['detection_hardness'], "standard_speed": item['standard_speed'], - "image": item['image'], + "image": image, }) else: brand.write({ @@ -2325,13 +2456,13 @@ class SyncHandle(models.Model): "code": item['code'], "handle_model_number": self.env['sf.handle.model'].search( [("code", '=', item['handle_model_number'])]).id, - "brand": self.env['sf.brand'].search( + "brand": self.env['sf.machine.brand'].search( [("code", '=', item['brand'])]).id, "length": item['length'], "length1": item['length1'], "diameter1": item['diameter1'], "weight": item['weight'], - "material_model": self.env['sf.material.model'].search( + "material_model": self.env['sf.materials.model'].search( [("materials_no", '=', item['material_model'])]).id, "body_accuracy": item['body_accuracy'], "nut": item['nut'], @@ -2341,7 +2472,7 @@ class SyncHandle(models.Model): "detection_accuracy": item['detection_accuracy'], "detection_hardness": item['detection_hardness'], "standard_speed": item['standard_speed'], - "image": item['image'], + "image": image, }) print('同步所有刀柄列表成功') else: @@ -2454,6 +2585,10 @@ class SyncChuck(models.Model): if item: brand = self.env['sf.chuck'].search( [("code", '=', item['code'])]) + if item.get('image'): + image = item['image'].encode('utf-8') + else: + image = '' if not brand: # code, name, chuck_model_number, brand, accuracy, diameter, inner_diameter, height, material_model, nut, handle_model, clamping_range, feature, image self.env['sf.chuck'].create({ @@ -2461,19 +2596,19 @@ class SyncChuck(models.Model): "name": item['name'], "chuck_model_number": self.env['sf.chuck.model'].search( [("code", '=', item['chuck_model_number'])]).id, - "brand": self.env['sf.brand'].search( + "brand": self.env['sf.machine.brand'].search( [("code", '=', item['brand'])]).id, "accuracy": item['accuracy'], "diameter": item['diameter'], "inner_diameter": item['inner_diameter'], "height": item['height'], - "material_model": self.env['sf.material.model'].search( - "materials_no", '=', item['material_model']).id, + "material_model": self.env['sf.materials.model'].search( + [("materials_no", '=', item['material_model'])]).id, "nut": item['nut'], "handle_model": handle_model_list, "clamping_range": item['clamping_range'], "feature": item['feature'], - "image": item['image'], + "image": image, }) else: brand.write({ @@ -2481,19 +2616,19 @@ class SyncChuck(models.Model): "name": item['name'], "chuck_model_number": self.env['sf.chuck.model'].search( [("code", '=', item['chuck_model_number'])]).id, - "brand": self.env['sf.brand'].search( + "brand": self.env['sf.machine.brand'].search( [("code", '=', item['brand'])]).id, "accuracy": item['accuracy'], "diameter": item['diameter'], "inner_diameter": item['inner_diameter'], "height": item['height'], - "material_model": self.env['sf.material.model'].search( - "materials_no", '=', item['material_model']).id, + "material_model": self.env['sf.materials.model'].search( + [("materials_no", '=', item['material_model'])]).id, "nut": item['nut'], "handle_model": handle_model_list, "clamping_range": item['clamping_range'], "feature": item['feature'], - "image": item['image'], + "image": image, }) print('同步每日夹头型号列表成功') else: @@ -2522,6 +2657,10 @@ class SyncChuck(models.Model): if item: brand = self.env['sf.chuck'].search( [("code", '=', item['code'])]) + if item.get('image'): + image = item['image'].encode('utf-8') + else: + image = '' if not brand: # code, name, chuck_model_number, brand, accuracy, diameter, inner_diameter, height, material_model, nut, handle_model, clamping_range, feature, image self.env['sf.chuck'].create({ @@ -2529,19 +2668,19 @@ class SyncChuck(models.Model): "name": item['name'], "chuck_model_number": self.env['sf.chuck.model'].search( [("code", '=', item['chuck_model_number'])]).id, - "brand": self.env['sf.brand'].search( + "brand": self.env['sf.machine.brand'].search( [("code", '=', item['brand'])]).id, "accuracy": item['accuracy'], "diameter": item['diameter'], "inner_diameter": item['inner_diameter'], "height": item['height'], - "material_model": self.env['sf.material.model'].search( - "materials_no", '=', item['material_model']).id, + "material_model": self.env['sf.materials.model'].search( + [("materials_no", '=', item['material_model'])]).id, "nut": item['nut'], "handle_model": handle_model_list, "clamping_range": item['clamping_range'], "feature": item['feature'], - "image": item['image'], + "image": image, }) else: brand.write({ @@ -2549,19 +2688,19 @@ class SyncChuck(models.Model): "name": item['name'], "chuck_model_number": self.env['sf.chuck.model'].search( [("code", '=', item['chuck_model_number'])]).id, - "brand": self.env['sf.brand'].search( + "brand": self.env['sf.machine.brand'].search( [("code", '=', item['brand'])]).id, "accuracy": item['accuracy'], "diameter": item['diameter'], "inner_diameter": item['inner_diameter'], "height": item['height'], - "material_model": self.env['sf.material.model'].search( - "materials_no", '=', item['material_model']).id, + "material_model": self.env['sf.materials.model'].search( + [("materials_no", '=', item['material_model'])]).id, "nut": item['nut'], "handle_model": handle_model_list, "clamping_range": item['clamping_range'], "feature": item['feature'], - "image": item['image'], + "image": image, }) print('同步所有夹头型号列表成功') else: