Accept Merge Request #726: (feature/修改机床参数bug -> develop)

Merge Request: 机床型号同步以及设备机床参数修改以及机床注册接口

Created By: @龚启豪
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @龚启豪
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/726?initial=true
This commit is contained in:
龚启豪
2023-12-21 17:38:15 +08:00
committed by Coding
10 changed files with 816 additions and 328 deletions

View File

@@ -9,6 +9,14 @@ from odoo.addons.sf_base.commons.common import Common
_logger = logging.getLogger(__name__)
class SpindleTaperType(models.Model):
_name = 'spindle.taper.type'
_description = '主轴锥孔型号'
name = fields.Char('名称')
active = fields.Boolean('有效', default=True)
class MachineBrandTags(models.Model):
_name = 'sf.machine.brand.tags'
_description = '标签'
@@ -269,31 +277,19 @@ class MachineToolType(models.Model):
('chilunjia', '齿轮架驱动')
], string="主轴加高方式", default='sifudianji')
workpiece_load = fields.Char('工件最大负载(kg)')
lead_screw = fields.Char('丝杆')
workbench_L = fields.Char('工作台长度(mm)')
workbench_W = fields.Char('工作台宽度(mm)')
guide_rail = fields.Char('导轨')
machine_tool_L = fields.Char('机床长度(mm)')
machine_tool_W = fields.Char('机床宽度(mm)')
machine_tool_H = fields.Char('机床高度(mm)')
feed_speed = fields.Char('进给速度(mm/min)')
tool_speed = fields.Char('刀具速度(m/min)')
distance_min = fields.Char('主轴端面至工作台面距离MIN(mm)')
distance_max = fields.Char('主轴端面至工作台面距离MAX(mm)')
taper = fields.Char('主轴锥度(°)')
torque = fields.Char('主轴电机扭矩(n/m)')
motor_power = fields.Char('主轴电机功率(kw)')
tool_quality_max = fields.Char('刀具最大质量(kg)')
tool_long_max = fields.Char('刀具最大长度(mm)')
tool_diameter_max = fields.Char('刀具刀径max(mm)')
tool_diameter_min = fields.Char('刀具刀径min(mm)')
machine_tool_category = fields.Many2one('sf.machine_tool.category', string='机床类型')
# 多个型号对应一个机床
machine_tool_id = fields.Many2one('sf.machine_tool', '机床')
number_of_axles = fields.Selection(
[("三轴", "三轴"), ("四轴", "四轴"), ("五轴", "五轴")],
default="", string="轴数")
# 加工进程
x_axis = fields.Integer('X轴')
y_axis = fields.Integer('Y轴')
@@ -301,13 +297,80 @@ class MachineToolType(models.Model):
b_axis = fields.Integer('B轴')
c_axis = fields.Integer('C轴')
remark = fields.Char('备注')
precision_min = fields.Float('X轴定位精度min(mm)', digits=(12, 3))
precision_max = fields.Float('X轴定位精度max(mm)', digits=(12, 3))
control_system_id = fields.Many2one('sf.machine.control_system',
string="控制系统")
active = fields.Boolean('有效', default=True)
code = fields.Char('编码')
# 1212修改后的字段
number_of_axles = fields.Selection(
[("三轴", "三轴"), ("四轴", "四轴"), ("五轴", "五轴"), ("六轴", "六轴")],
default="", string="轴数")
# 1212新增字段
a_axis = fields.Integer('a轴')
function_type = fields.Selection(
[("ZXJGZX", "钻铣加工中心"), ("CXJGZX", "车削加工中心"), ("FHJGZX", "复合加工中心")],
default="", string="功能类型")
T_trough_num = fields.Integer('槽数')
T_trough_wide = fields.Float('槽宽(mm)')
T_trough_distance = fields.Float('槽距(mm)')
taper_type_id = fields.Many2one('spindle.taper.type', string='主轴锥孔型号')
spindle_center_distance = fields.Float('主轴中心至立柱滑轨面距离(mm)')
spindle_continuous_power = fields.Float('主轴持续功率(kw)')
spindle_peak_power = fields.Float('主轴峰值功率(kw)')
spindle_sustained_torque = fields.Float('主轴持续扭矩(n/m)')
spindle_peak_torque = fields.Float('主轴峰值扭矩(n/m)')
linear_axis_guides_type = fields.Char('直线轴导轨类型')
axis_driven_type = fields.Char('坐标轴驱动类型')
X_axis_rapid_traverse_speed = fields.Char('X轴快速进给速度(mm/min)')
Y_axis_rapid_traverse_speed = fields.Char('Y轴快速进给速度(mm/min)')
Z_axis_rapid_traverse_speed = fields.Char('Z轴快速进给速度(mm/min)')
a_axis_rapid_traverse_speed = fields.Char('a轴快速进给速度(mm/min)')
b_axis_rapid_traverse_speed = fields.Char('b轴快速进给速度(mm/min)')
c_axis_rapid_traverse_speed = fields.Char('c轴快速进给速度(mm/min)')
straight_cutting_feed_rate = fields.Char('直线切削进给速度(mm/min)')
rotary_cutting_feed_rate = fields.Char('回转切削进给速度(mm/min)')
X_precision = fields.Float('X轴定位精度(mm)', digits=(12, 3))
X_precision_repeat = fields.Float('X轴重复定位精度(mm)', digits=(12, 3))
Y_precision = fields.Float('Y轴定位精度(mm)', digits=(12, 3))
Y_precision_repeat = fields.Float('Y轴重复定位精度(mm)', digits=(12, 3))
Z_precision = fields.Float('Z轴定位精度(mm)', digits=(12, 3))
Z_precision_repeat = fields.Float('Z轴重复定位精度(mm)', digits=(12, 3))
a_precision = fields.Float('a轴定位精度(mm)', digits=(12, 3))
a_precision_repeat = fields.Float('a轴重复定位精度(mm)', digits=(12, 3))
b_precision = fields.Float('b轴定位精度(mm)', digits=(12, 3))
b_precision_repeat = fields.Float('b轴重复定位精度(mm)', digits=(12, 3))
c_precision = fields.Float('c轴定位精度(mm)', digits=(12, 3))
c_precision_repeat = fields.Float('c轴重复定位精度(mm)', digits=(12, 3))
tool_full_diameter_max = fields.Float('刀具满刀最大直径(mm)')
tool_perimeter_diameter_max = fields.Float('刀具邻空刀最大直径(mm)')
T_tool_time = fields.Integer('T-T换刀时间(s)')
C_tool_time = fields.Integer('C-C换刀时间(s)')
jg_image_id = fields.Many2many('maintenance.equipment.image', 'jg_equipment_id', string='加工能力',
domain="[('type', '=', '加工能力')]")
lq_image_id = fields.Many2many('maintenance.equipment.image', 'lq_equipment_id', string='冷却方式',
domain="[('type', '=', '冷却方式')]")
#待删除字段
precision_min = fields.Float('X轴定位精度min(mm)', digits=(12, 3))
precision_max = fields.Float('X轴定位精度max(mm)', digits=(12, 3))
lead_screw = fields.Char('丝杆')
guide_rail = fields.Char('导轨')
feed_speed = fields.Char('进给速度(mm/min)')
tool_speed = fields.Char('刀具速度(m/min)')
torque = fields.Char('主轴点击扭矩(n/m)')
motor_power = fields.Char('主轴电机功率(kw)')
taper = fields.Char('主轴锥度(°)')
tool_diameter_max = fields.Char('刀具刀径max(mm)')
tool_diameter_min = fields.Char('刀具刀径min(mm)')
def _get_ids(self, machine_tool_type_code):
machine_tool_type_ids = []
for item in machine_tool_type_code:

View File

@@ -175,9 +175,12 @@ class MaintenanceStandardImage(models.Model):
image = fields.Binary(string='图文')
type = fields.Selection(
[('加工能力', '加工能力'), ('刀尖特征', '刀尖特征'), ('柄部类型', '柄部类型'), ('走刀方向', '走刀方向'),
('冷却液', '冷却液'), ('压紧方式', '压紧方式'), ('刀片形状', '刀片形状')],
('冷却液', '冷却液'), ('压紧方式', '压紧方式'), ('刀片形状', '刀片形状'), ('冷却方式', '冷却方式')],
string='特征')
equipment_id = fields.Many2many('maintenance.equipment', 'image_id', string='设备')
equipment_lq_id = fields.Many2many('maintenance.equipment', 'image_lq_id', string='设备')
jg_equipment_id = fields.Many2many('sf.machine_tool.type', 'jg_image_id', string='机床型号')
lq_equipment_id = fields.Many2many('sf.machine_tool.type', 'lq_image_id', string='机床型号')
def _get_ids(self, name_arr):
ability_feature_ids = []

View File

@@ -34,6 +34,7 @@ access_purchase_order_group_purchase,access_purchase_order_group_purchase,purcha
access_purchase_order_group_purchase_director,access_purchase_order_group_purchase_director,purchase.model_purchase_order,sf_base.group_purchase_director,1,1,1,0
access_purchase_order_line_group_purchase,access_purchase_order_line_group_purchase,purchase.model_purchase_order_line,sf_base.group_purchase,1,1,1,0
access_purchase_order_line_group_purchase_director,access_purchase_order_line_group_purchase_director,purchase.model_purchase_order_line,sf_base.group_purchase_director,1,1,1,0
access_spindle_taper_type,spindle_taper_type,model_spindle_taper_type,base.group_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
34 access_purchase_order_group_purchase_director access_purchase_order_group_purchase_director purchase.model_purchase_order sf_base.group_purchase_director 1 1 1 0
35 access_purchase_order_line_group_purchase access_purchase_order_line_group_purchase purchase.model_purchase_order_line sf_base.group_purchase 1 1 1 0
36 access_purchase_order_line_group_purchase_director access_purchase_order_line_group_purchase_director purchase.model_purchase_order_line sf_base.group_purchase_director 1 1 1 0
37 access_spindle_taper_type spindle_taper_type model_spindle_taper_type base.group_user 1 1 1 1
38 access_purchase_order purchase.order purchase.model_purchase_order sf_base.group_plan_dispatch 1 0 0 0
39 access_purchase_order_line purchase.order.line purchase.model_purchase_order_line sf_base.group_plan_dispatch 1 0 0 0
40 access_account_move_line account.move.line account.model_account_move_line sf_base.group_plan_dispatch 1 0 0 0

View File

@@ -81,7 +81,10 @@
<field name="name" string="模糊搜索"
filter_domain="['|',('name', 'ilike', self),('remark', 'ilike', self)]"/>
<filter name="filter_active" string="已归档" domain="[('active','=',False)]"/>
<searchpanel>
<field name="brand_id" select="multi" icon="fa-building" enable_counters="1"/>
<field name="machine_tool_category" select="multi" icon="fa-building" enable_counters="1"/>
</searchpanel>
</search>
</field>
</record>
@@ -90,7 +93,7 @@
<field name="name">tree.sf.machine_tool.type</field>
<field name="model">sf.machine_tool.type</field>
<field name="arch" type="xml">
<tree string="机床型号" create="0" delete="1" edit="0">
<tree string="机床型号" create="1" delete="1" edit="1">
<field name="code"/>
<field name="name" string="名称"/>
<field name="machine_tool_category"/>
@@ -105,20 +108,16 @@
<field name="name">form.sf.machine_tool.type</field>
<field name="model">sf.machine_tool.type</field>
<field name="arch" type="xml">
<form string="机床型号" create="0" edit="1" delete="0">
<form string="机床型号" delete="0">
<sheet>
<div class="oe_title">
<h1>
<field name="name" placeholder="e.g. LED Monitor"/>
<field name="name" required="1" placeholder="名称"/>
</h1>
</div>
<group>
<group>
<!-- <label for="name"/>-->
<!-- <h1>-->
<!-- <field name="name" string="设备名称" placeholder="e.g. LED Monitor"/>-->
<!-- </h1>-->
<field name="code" force_save="1" readonly="1"/>
<field name="code" force_save="1"/>
<field name="brand_id" required="1"
domain="[('tag_ids', '=', '机床')]"
options="{'no_create': True}"/>
@@ -128,10 +127,40 @@
<field name="machine_tool_picture" widget="image" nolabel="1"/>
</group>
</group>
<group string="加工能力">
<div>
<field name='jg_image_id' widget="custom_many2many_checkboxes">
<tree>
<field name="name"/>
<field name="image" widget="image"
options="{'size': [100, 100], 'click enlarge': True}"/>
</tree>
</field>
</div>
</group>
<group string="冷却方式">
<div>
<field name='lq_image_id' widget="custom_many2many_checkboxes">
<tree>
<field name="name"/>
<field name="image" widget="image"
options="{'size': [100, 100], 'click enlarge': True}"/>
</tree>
</field>
</div>
</group>
<notebook>
<page string="基本信息">
<group>
<group string="基参数">
<group string="基参数">
<field name="control_system_id" required="1" options="{'no_create': True}"/>
<label for="workbench_L" string="工作台尺寸(mm)"/>
<div class="test_model">
@@ -143,33 +172,47 @@
<field name="workbench_W" class="o_address_zip" required="1"
options="{'format': false}"/>
</div>
<field name="workpiece_load"/>
<label for="machine_tool_L" string="机床尺寸(mm)"/>
<div class="test_model">
<label for="machine_tool_L" string="长"/>
<field name="machine_tool_L" class="o_address_zip" required="1"
<field name="machine_tool_L" class="o_address_zip"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="machine_tool_W" string="宽"/>
<field name="machine_tool_W" class="o_address_zip" required="1"
<field name="machine_tool_W" class="o_address_zip"
options="{'format': false}"/>
<label for="machine_tool_H" string="高"/>
<field name="machine_tool_H" class="o_address_zip" required="1"
<field name="machine_tool_H" class="o_address_zip"
options="{'format': false}"/>
</div>
<field name="feed_speed" required="1"/>
<label for="precision_min" string="X轴定位精度(mm)"/>
<label for="T_trough_num" string="T型槽尺寸:"/>
<div class="test_model">
<label for="precision_min" string="最小"/>
<field name="precision_min" class="o_address_zip" required="1"
<label for="T_trough_num" string="槽数"/>
<field name="T_trough_num" class="o_address_zip"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="precision_max" string="最大"/>
<field name="precision_max" class="o_address_zip" required="1"
<label for="T_trough_wide" string="槽宽(mm)"/>
<field name="T_trough_wide" class="o_address_zip"
options="{'format': false}"/>
<label for="T_trough_distance" string="槽距(mm)"/>
<field name="T_trough_distance" class="o_address_zip"
options="{'format': false}"/>
</div>
<field name="workpiece_load" required="1"/>
<field name="number_of_knife_library" required="1" options="{'format': false}"/>
<field name="lead_screw" required="1"/>
<!-- <field name="feed_speed" required="1"/>-->
<!-- <label for="precision_min" string="X轴定位精度(mm)"/>-->
<!-- <div class="test_model">-->
<!-- <label for="precision_min" string="最小(min)"/>-->
<!-- <field name="precision_min" class="o_address_zip" required="1"-->
<!-- options="{'format': false}"/>-->
<!-- <span>&amp;nbsp;</span>-->
<!-- <label for="precision_max" string="最大(max)"/>-->
<!-- <field name="precision_max" class="o_address_zip" required="1"-->
<!-- options="{'format': false}"/>-->
<!-- </div>-->
<!-- <field name="lead_screw" required="1"/>-->
<!-- <field name="guide_rail" required="1"/>-->
<field name="number_of_axles" required="1" widget="radio"
options="{'horizontal': true}"/>
<label for="x_axis" string="加工行程(mm)"
@@ -187,59 +230,104 @@
<label for="z_axis" string="z"/>
<field name="z_axis" class="o_address_zip" required="1"
options="{'format': false}"/>
<br></br>
<label for="b_axis" string="b"
<span>&amp;nbsp;</span>
<label for="a_axis" string="a"
attrs="{'invisible': [('number_of_axles', '=', '三轴')]}"/>
<field name="b_axis" class="o_address_zip" required="1"
<field name="a_axis" class="o_address_zip"
attrs="{'invisible': [('number_of_axles', '=', '三轴')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="c_axis" string="c"
<label for="b_axis" string="b"
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴'])]}"/>
<field name="c_axis" class="o_address_zip" required="1"
<field name="b_axis" class="o_address_zip"
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴'])]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="c_axis" string="c"
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴','五轴'])]}"/>
<field name="c_axis" class="o_address_zip"
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴','五轴'])]}"
options="{'format': false}"/>
</div>
</group>
<group string="主轴">
<field name="taper" required="1"/>
<field name="rotate_speed" string="主轴转速(r/min)" required="1"
<field name="taper_type_id" required="1"/>
<label for="distance_min" string="主轴端面-工作台距离(mm)"/>
<div class="test_model">
<label for="distance_min" string="最小(min)"/>
<field name="distance_min" class="o_address_zip"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="distance_max" string="最大(max)"/>
<field name="distance_max" class="o_address_zip"
options="{'format': false}"/>
</div>
<field name="rotate_speed" string="主轴最高转速(r/min)"
options="{'format': false}"/>
<field name="heightened_way" required="1"/>
<field name="torque" required="1"/>
<field name="motor_power" required="1"/>
<label for="distance_min" string="主轴端面-工作台距离(mm)"/>
<div class="test_model">
<label for="distance_min" string="最小"/>
<field name="distance_min" class="o_address_zip" required="1"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="distance_max" string="最大"/>
<field name="distance_max" class="o_address_zip" required="1"
options="{'format': false}"/>
</div>
<field name="guide_rail" required="1"/>
</group>
<group></group>
<group string="刀具">
<field name="knife_type" required="1"/>
<field name="tool_speed" required="1"/>
<field name="tool_long_max" required="1"/>
<label for="tool_diameter_min" string="刀具刀径(mm)"/>
<div class="test_model">
<label for="tool_diameter_min" string="最小"/>
<field name="tool_diameter_min" class="o_address_zip" required="1"
options="{'format': false}"/>Φ
<span>&amp;nbsp;</span>
<label for="tool_diameter_max" string="最大"/>
<field name="tool_diameter_max" class="o_address_zip" required="1"
options="{'format': false}"/>Φ
</div>
<field name="tool_quality_max" required="1"/>
<field name="spindle_center_distance"/>
<field name="spindle_continuous_power"/>
<field name="spindle_peak_power"/>
<field name="spindle_sustained_torque"/>
<field name="spindle_peak_torque"/>
<field name="heightened_way"/>
<field name="linear_axis_guides_type"/>
<field name="axis_driven_type"/>
<!-- <field name="distance" required="1"/>-->
</group>
</group>
<group string="其它">
<field name="remark"/>
</page>
<page string="进给/精度参数">
<group>
<group string="进给参数">
<field name="X_axis_rapid_traverse_speed"/>
<field name="Y_axis_rapid_traverse_speed"/>
<field name="Z_axis_rapid_traverse_speed"/>
<field name="a_axis_rapid_traverse_speed"/>
<field name="b_axis_rapid_traverse_speed"/>
<field name="c_axis_rapid_traverse_speed"/>
<field name="straight_cutting_feed_rate"/>
<field name="rotary_cutting_feed_rate"/>
</group>
<group string="精度参数">
<field name="X_precision"/>
<field name="X_precision_repeat"/>
<field name="Y_precision"/>
<field name="Y_precision_repeat"/>
<field name="Z_precision"/>
<field name="Z_precision_repeat"/>
<field name="a_precision"/>
<field name="a_precision_repeat"/>
<field name="b_precision"/>
<field name="b_precision_repeat"/>
<field name="c_precision"/>
<field name="c_precision_repeat"/>
</group>
</group>
</page>
<page string="刀库参数">
<group>
<group string="刀具">
<!-- <field name="knife_type" required="1"/>-->
<field name="number_of_knife_library" required="1" options="{'format': false}"/>
<!-- <field name="tool_speed" required="1"/>-->
<field name="tool_full_diameter_max"/>
<field name="tool_perimeter_diameter_max"/>
<field name="tool_long_max"/>
<!-- <label for="tool_diameter_min" string="刀具刀径(mm)"/>-->
<!-- <div class="test_model">-->
<!-- <label for="tool_diameter_min" string="最小(min)"/>-->
<!-- <field name="tool_diameter_min" class="o_address_zip" required="1"-->
<!-- options="{'format': false}"/>-->
<!-- <span>&amp;nbsp;</span>-->
<!-- <label for="tool_diameter_max" string="最大(max)"/>-->
<!-- <field name="tool_diameter_max" class="o_address_zip" required="1"-->
<!-- options="{'format': false}"/>-->
<!-- </div>-->
<field name="tool_quality_max"/>
<field name="T_tool_time"/>
<field name="C_tool_time"/>
</group>
</group>
</page>
</notebook>

View File

@@ -14,6 +14,7 @@
'views/maintenance_views.xml',
'views/equipment_maintenance_standards_views.xml',
'views/maintenance_request_views.xml',
'views/maintenance_equipment_category_views.xml',
],
'installable': True,
'application': False,

View File

@@ -14,6 +14,7 @@ class SfMaintenanceEquipmentCategory(models.Model):
equipment_type = fields.Selection([('机床', '机床'), ('机器人', '机器人'), ('AGV小车', 'AGV小车'),
('检测设备', '检测设备')], string='类型', default='机床')
equipment_type_code = fields.Char('简写')
class SfMaintenanceEquipment(models.Model):
@@ -22,6 +23,69 @@ class SfMaintenanceEquipment(models.Model):
crea_url = "/api/machine_tool/create"
# 1212修改后的字段
number_of_axles = fields.Selection(
[("三轴", "三轴"), ("四轴", "四轴"), ("五轴", "五轴"), ("六轴", "六轴")],
default="", string="轴数")
# 1212新增字段
a_axis = fields.Integer('a轴')
function_type = fields.Selection(
[("ZXJGZX", "钻铣加工中心"), ("CXJGZX", "车削加工中心"), ("FHJGZX", "复合加工中心")],
default="", string="功能类型")
T_trough_num = fields.Integer('槽数')
T_trough_wide = fields.Float('槽宽(mm)')
T_trough_distance = fields.Float('槽距(mm)')
taper_type_id = fields.Many2one('spindle.taper.type', string='主轴锥孔型号')
spindle_center_distance = fields.Float('主轴中心至立柱滑轨面距离(mm)')
spindle_continuous_power = fields.Float('主轴持续功率(kw)')
spindle_peak_power = fields.Float('主轴峰值功率(kw)')
spindle_sustained_torque = fields.Float('主轴持续扭矩(n/m)')
spindle_peak_torque = fields.Float('主轴峰值扭矩(n/m)')
linear_axis_guides_type = fields.Char('直线轴导轨类型')
axis_driven_type = fields.Char('坐标轴驱动类型')
X_axis_rapid_traverse_speed = fields.Char('X轴快速进给速度(mm/min)')
Y_axis_rapid_traverse_speed = fields.Char('Y轴快速进给速度(mm/min)')
Z_axis_rapid_traverse_speed = fields.Char('Z轴快速进给速度(mm/min)')
a_axis_rapid_traverse_speed = fields.Char('a轴快速进给速度(mm/min)')
b_axis_rapid_traverse_speed = fields.Char('b轴快速进给速度(mm/min)')
c_axis_rapid_traverse_speed = fields.Char('c轴快速进给速度(mm/min)')
straight_cutting_feed_rate = fields.Char('直线切削进给速度(mm/min)')
rotary_cutting_feed_rate = fields.Char('回转切削进给速度(mm/min)')
X_precision = fields.Float('X轴定位精度(mm)', digits=(12, 3))
X_precision_repeat = fields.Float('X轴重复定位精度(mm)', digits=(12, 3))
Y_precision = fields.Float('Y轴定位精度(mm)', digits=(12, 3))
Y_precision_repeat = fields.Float('Y轴重复定位精度(mm)', digits=(12, 3))
Z_precision = fields.Float('Z轴定位精度(mm)', digits=(12, 3))
Z_precision_repeat = fields.Float('Z轴重复定位精度(mm)', digits=(12, 3))
a_precision = fields.Float('a轴定位精度(mm)', digits=(12, 3))
a_precision_repeat = fields.Float('a轴重复定位精度(mm)', digits=(12, 3))
b_precision = fields.Float('b轴定位精度(mm)', digits=(12, 3))
b_precision_repeat = fields.Float('b轴重复定位精度(mm)', digits=(12, 3))
c_precision = fields.Float('c轴定位精度(mm)', digits=(12, 3))
c_precision_repeat = fields.Float('c轴重复定位精度(mm)', digits=(12, 3))
tool_full_diameter_max = fields.Float('刀具满刀最大直径(mm)')
tool_perimeter_diameter_max = fields.Float('刀具邻空刀最大直径(mm)')
T_tool_time = fields.Integer('T-T换刀时间(s)')
C_tool_time = fields.Integer('C-C换刀时间(s)')
# 待删除字段
precision_min = fields.Float('X轴定位精度min(mm)', digits=(12, 3))
precision_max = fields.Float('X轴定位精度max(mm)', digits=(12, 3))
lead_screw = fields.Char('丝杆')
guide_rail = fields.Char('导轨')
feed_speed = fields.Char('进给速度(mm/min)')
tool_speed = fields.Char('刀具速度(m/min)')
torque = fields.Char('主轴点击扭矩(n/m)')
motor_power = fields.Char('主轴电机功率(kw)')
taper = fields.Char('主轴锥度(°)')
tool_diameter_max = fields.Char('刀具刀径max(mm)')
tool_diameter_min = fields.Char('刀具刀径min(mm)')
def get_no(self):
partner = self.env['maintenance.equipment'].sudo().search(
[('MTcode', '!=', '')],
@@ -81,9 +145,6 @@ class SfMaintenanceEquipment(models.Model):
default="", string="刀把类型")
number_of_knife_library = fields.Integer('刀库数量(把)')
rotate_speed = fields.Integer('转速')
number_of_axles = fields.Selection(
[("三轴", "三轴"), ("四轴", "四轴"), ("五轴", "五轴")],
default="", string="轴数")
# 加工进程
x_axis = fields.Integer('X轴')
y_axis = fields.Integer('Y轴')
@@ -92,8 +153,6 @@ class SfMaintenanceEquipment(models.Model):
c_axis = fields.Integer('C轴')
remark = fields.Char('备注')
is_binding = fields.Boolean('是否绑定机床', default=False)
precision_min = fields.Float('X轴定位精度min(mm)', digits=(12, 3))
precision_max = fields.Float('X轴定位精度max(mm)', digits=(12, 3))
control_system_id = fields.Many2one('sf.machine.control_system',
string="控制系统")
# 多个机床型号对应一个机床
@@ -111,24 +170,15 @@ class SfMaintenanceEquipment(models.Model):
('chilunjia', '齿轮架驱动')
], string="主轴加高方式", default='sifudianji')
workpiece_load = fields.Char('工件最大负载(kg)')
lead_screw = fields.Char('丝杆')
workbench_L = fields.Char('工作台长度(mm)')
workbench_W = fields.Char('工作台宽度(mm)')
guide_rail = fields.Char('导轨')
machine_tool_L = fields.Char('机床长度(mm)')
machine_tool_W = fields.Char('机床宽度(mm)')
machine_tool_H = fields.Char('机床高度(mm)')
feed_speed = fields.Char('进给速度(mm/min)')
tool_speed = fields.Char('刀具速度(m/min)')
distance_min = fields.Char('主轴端面至工作台面距离MIN(mm)')
distance_max = fields.Char('主轴端面至工作台面距离MAX(mm)')
taper = fields.Char('主轴锥度(°)')
torque = fields.Char('主轴电机扭矩(n/m)')
motor_power = fields.Char('主轴电机功率(kw)')
tool_quality_max = fields.Char('刀具最大质量(kg)')
tool_long_max = fields.Char('刀具最大长度(mm)')
tool_diameter_max = fields.Char('刀具刀径max(mm)')
tool_diameter_min = fields.Char('刀具刀径min(mm)')
machine_tool_category = fields.Many2one('sf.machine_tool.category', string='机床类型')
# 一个机床对应一個加工工厂,一个加工工厂对应多个机床
factory_id = fields.Many2one('res.partner', string='所属工厂',
@@ -247,6 +297,48 @@ class SfMaintenanceEquipment(models.Model):
item.tool_diameter_min = item.type_id.tool_diameter_min
item.machine_tool_category = item.type_id.machine_tool_category.id
item.brand_id = item.type_id.brand_id.id
#新增修改字段
item.taper_type_id = item.type_id.taper_type_id.id
item.function_type = item.type_id.function_type
item.a_axis = item.type_id.a_axis
item.T_trough_num = item.type_id.T_trough_num
item.T_trough_wide = item.type_id.T_trough_wide
item.T_trough_distance = item.type_id.T_trough_distance
item.spindle_center_distance = item.type_id.spindle_center_distance
item.spindle_continuous_power = item.type_id.spindle_continuous_power
item.spindle_peak_power = item.type_id.spindle_peak_power
item.spindle_sustained_torque = item.type_id.spindle_sustained_torque
item.spindle_peak_torque = item.type_id.spindle_peak_torque
item.linear_axis_guides_type = item.type_id.linear_axis_guides_type
item.axis_driven_type = item.type_id.axis_driven_type
item.X_axis_rapid_traverse_speed = item.type_id.X_axis_rapid_traverse_speed
item.Y_axis_rapid_traverse_speed = item.type_id.Y_axis_rapid_traverse_speed
item.Z_axis_rapid_traverse_speed = item.type_id.Z_axis_rapid_traverse_speed
item.a_axis_rapid_traverse_speed = item.type_id.a_axis_rapid_traverse_speed
item.b_axis_rapid_traverse_speed = item.type_id.b_axis_rapid_traverse_speed
item.c_axis_rapid_traverse_speed = item.type_id.c_axis_rapid_traverse_speed
item.straight_cutting_feed_rate = item.type_id.straight_cutting_feed_rate
item.rotary_cutting_feed_rate = item.type_id.rotary_cutting_feed_rate
item.X_precision = item.type_id.X_precision
item.X_precision_repeat = item.type_id.X_precision_repeat
item.Y_precision = item.type_id.Y_precision
item.Y_precision_repeat = item.type_id.Y_precision_repeat
item.Z_precision = item.type_id.Z_precision
item.Z_precision_repeat = item.type_id.Z_precision_repeat
item.a_precision = item.type_id.a_precision
item.a_precision_repeat = item.type_id.a_precision_repeat
item.b_precision = item.type_id.b_precision
item.b_precision_repeat = item.type_id.b_precision_repeat
item.c_precision = item.type_id.c_precision
item.c_precision_repeat = item.type_id.c_precision_repeat
item.tool_full_diameter_max = item.type_id.tool_full_diameter_max
item.tool_perimeter_diameter_max = item.type_id.tool_perimeter_diameter_max
item.T_tool_time = item.type_id.T_tool_time
item.C_tool_time = item.type_id.C_tool_time
item.C_tool_time = item.type_id.C_tool_time
item.image_id = item.type_id.jg_image_id.ids
item.image_lq_id = item.type_id.lq_image_id.ids
# AGV小车设备参数
AGV_L = fields.Char('AGV尺寸(长)')
@@ -415,7 +507,45 @@ class SfMaintenanceEquipment(models.Model):
'distance_max': item.distance_max,
'tool_diameter_min': item.tool_diameter_min,
'machine_tool_category': item.machine_tool_category.code,
'image_id': images_ids_names
'image_id': images_ids_names,
'taper_type_id': item.taper_type_id.name,
'function_type': item.function_type,
'a_axis': item.a_axis,
'T_trough_num': item.T_trough_num,
'T_trough_wide': item.T_trough_wide,
'T_trough_distance': item.T_trough_distance,
'spindle_center_distance': item.spindle_center_distance,
'spindle_continuous_power': item.spindle_continuous_power,
'spindle_peak_power': item.spindle_peak_power,
'spindle_sustained_torque': item.spindle_sustained_torque,
'spindle_peak_torque': item.spindle_peak_torque,
'linear_axis_guides_type': item.linear_axis_guides_type,
'axis_driven_type': item.axis_driven_type,
'X_axis_rapid_traverse_speed': item.X_axis_rapid_traverse_speed,
'Y_axis_rapid_traverse_speed': item.Y_axis_rapid_traverse_speed,
'Z_axis_rapid_traverse_speed': item.Z_axis_rapid_traverse_speed,
'a_axis_rapid_traverse_speed': item.a_axis_rapid_traverse_speed,
'b_axis_rapid_traverse_speed': item.b_axis_rapid_traverse_speed,
'c_axis_rapid_traverse_speed': item.c_axis_rapid_traverse_speed,
'straight_cutting_feed_rate': item.straight_cutting_feed_rate,
'rotary_cutting_feed_rate': item.rotary_cutting_feed_rate,
'X_precision': item.X_precision,
'X_precision_repeat': item.X_precision_repeat,
'Y_precision': item.X_precision,
'Y_precision_repeat': item.X_precision_repeat,
'Z_precision': item.X_precision,
'Z_precision_repeat': item.X_precision_repeat,
'a_precision': item.X_precision,
'a_precision_repeat': item.X_precision_repeat,
'b_precision': item.X_precision,
'b_precision_repeat': item.X_precision_repeat,
'c_precision': item.X_precision,
'c_precision_repeat': item.X_precision_repeat,
'tool_full_diameter_max': item.tool_full_diameter_max,
'tool_perimeter_diameter_max': item.tool_perimeter_diameter_max,
'T_tool_time': item.T_tool_time,
'C_tool_time': item.C_tool_time,
'jiancheng': item.category_id.equipment_type_code
}
machine_tool_list.append(val)
# kw = machine_tool_list
@@ -598,8 +728,10 @@ class SfMaintenanceEquipment(models.Model):
if not next_requests:
equipment._create_new_request1(equipment.overhaul_date)
image_id = fields.Many2many('maintenance.equipment.image', 'equipment_id', string='加工能力',
image_id = fields.Many2many('maintenance.equipment.image', 'equipment_id',
domain="[('type', '=', '加工能力')]")
image_lq_id = fields.Many2many('maintenance.equipment.image', 'equipment_lq_id', string='冷却方式',
domain="[('type', '=', '冷却方式')]")
class SfRobotAxisNum(models.Model):

View File

@@ -0,0 +1,14 @@
<?xml version="1.0"?>
<odoo>
<!-- 设备类别 -->
<record id="sf_maintenance_equipment_category" model="ir.ui.view">
<field name="name">sf.maintenance.equipment.category</field>
<field name="model">maintenance.equipment.category</field>
<field name="inherit_id" ref="maintenance.hr_equipment_category_view_tree"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='name']" position="after">
<field name="equipment_type_code"/>
</xpath>
</field>
</record>
</odoo>

View File

@@ -8,6 +8,7 @@
<field name="arch" type="xml">
<xpath expr="//field[@name='technician_user_id']" position="before">
<field name="equipment_type" required='1'/>
<field name="equipment_type_code" required='1'/>
</xpath>
</field>
</record>
@@ -55,8 +56,8 @@
groups="sf_maintenance.sf_group_equipment_manager"/>
</div>
</xpath>
<xpath expr="//field[@name='category_id']" position="before">
<field name="MTcode"/>
<xpath expr="//field[@name='category_id']" position="before">
<field name="MTcode"/>
</xpath>
<xpath expr="//field[@name='category_id']" position="after">
<field name="state_zc"/>
@@ -72,175 +73,171 @@
<page string="设备参数" name="sf_equipment"
attrs="{'invisible': [('equipment_type', '!=', '机床')]}">
<group>
<div class="bigger">
<group string="基本参数">
<field name="control_system_id" required="1" options="{'no_create': True}"/>
<label for="workbench_L" string="工作台尺寸(mm)"/>
<div class="test_model">
<div>
<label for="workbench_L" string="长"/>
<field name="workbench_L" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
</div>
<span>&amp;nbsp;</span>
<div>
<label for="workbench_W" string="宽"/>
<field name="workbench_W" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
</div>
</div>
<label for="machine_tool_L" string="机床尺寸(mm)"/>
<div class="test_model">
<div>
<label for="machine_tool_L" string="长"/>
<field name="machine_tool_L" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
</div>
<div>
<label for="machine_tool_W" string="宽"/>
<field name="machine_tool_W" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
</div>
<div>
<label for="machine_tool_H" string="高"/>
<field name="machine_tool_H" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
</div>
</div>
<field name="feed_speed" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<label for="precision_min" string="X轴定位精度(mm)"/>
<div class="test_model">
<div>
<label for="precision_min" string="最小(min)"/>
<field name="precision_min" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
</div>
<span>&amp;nbsp;</span>
<div>
<label for="precision_max" string="最大(max)"/>
<field name="precision_max" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
</div>
</div>
<field name="workpiece_load"
attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<field name="lead_screw" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<field name="number_of_axles"
attrs="{'required': [('equipment_type', '=', '机床')]}"
widget="radio"
options="{'horizontal': true}"/>
<label for="x_axis" string="加工行程(mm)"
attrs="{'invisible': [('number_of_axles', '=', False)]}"/>
<div class="test_model"
attrs="{'invisible': [('number_of_axles', '=', False)]}">
<div>
<label for="x_axis" string="x"/>
<field name="x_axis" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
</div>
<span>&amp;nbsp;</span>
<div>
<label for="y_axis" string="y"/>
<field name="y_axis" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
</div>
<span>&amp;nbsp;</span>
<div>
<label for="z_axis" string="z"/>
<field name="z_axis" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
</div>
<br></br>
<div>
<label for="b_axis" string="b"
attrs="{'invisible': [('number_of_axles', '=', '三轴')]}"/>
<field name="b_axis" class="o_address_zip"
attrs="{'invisible': [('number_of_axles', '=', '三轴')]}"
options="{'format': false}"/>
</div>
<span>&amp;nbsp;</span>
<div>
<label for="c_axis" string="c"
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴'])]}"/>
<field name="c_axis" class="o_address_zip"
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴'])]}"
options="{'format': false}"/>
</div>
</div>
</group>
</div>
<div class="bigger">
<group string="主轴">
<field name="taper" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<field name="rotate_speed" string="主轴转速(r/min)"
attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
<field name="heightened_way"
attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<field name="torque" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<field name="motor_power" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<label for="distance_min" string="主轴端面-工作台距离(mm)"/>
<div class="test_model">
<div>
<label for="distance_min" string="最小min"/>
<field name="distance_min" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
</div>
<span>&amp;nbsp;</span>
<div>
<label for="distance_max" string="最大max"/>
<field name="distance_max" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
</div>
</div>
<field name="guide_rail" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
</group>
</div>
<group string="刀具">
<field name="number_of_knife_library"
attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
<field name="knife_type" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<field name="tool_speed" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<field name="tool_long_max"
attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<label for="tool_diameter_min" string="刀具刀径(mm)"/>
<group string="基础参数">
<field name="control_system_id" required="1" options="{'no_create': True}"/>
<label for="workbench_L" string="工作台尺寸(mm)"/>
<div class="test_model">
<div>
<label for="tool_diameter_min" string="最小(min)"/>
<field name="tool_diameter_min" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
</div>
<label for="workbench_L" string="长"/>
<field name="workbench_L" class="o_address_zip" required="1"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<div>
<label for="tool_diameter_max" string="最大(max)"/>
<field name="tool_diameter_max" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
</div>
<label for="workbench_W" string="宽"/>
<field name="workbench_W" class="o_address_zip" required="1"
options="{'format': false}"/>
</div>
<field name="workpiece_load"/>
<label for="machine_tool_L" string="机床尺寸(mm)"/>
<div class="test_model">
<label for="machine_tool_L" string="长"/>
<field name="machine_tool_L" class="o_address_zip"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="machine_tool_W" string="宽"/>
<field name="machine_tool_W" class="o_address_zip"
options="{'format': false}"/>
<label for="machine_tool_H" string="高"/>
<field name="machine_tool_H" class="o_address_zip"
options="{'format': false}"/>
</div>
<label for="T_trough_num" string="T型槽尺寸:"/>
<div class="test_model">
<label for="T_trough_num" string="槽数"/>
<field name="T_trough_num" class="o_address_zip"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="T_trough_wide" string="槽宽(mm)"/>
<field name="T_trough_wide" class="o_address_zip"
options="{'format': false}"/>
<label for="T_trough_distance" string="槽距(mm)"/>
<field name="T_trough_distance" class="o_address_zip"
options="{'format': false}"/>
</div>
<!-- <field name="feed_speed" required="1"/>-->
<!-- <label for="precision_min" string="X轴定位精度(mm)"/>-->
<!-- <div class="test_model">-->
<!-- <label for="precision_min" string="最小(min)"/>-->
<!-- <field name="precision_min" class="o_address_zip" required="1"-->
<!-- options="{'format': false}"/>-->
<!-- <span>&amp;nbsp;</span>-->
<!-- <label for="precision_max" string="最大(max)"/>-->
<!-- <field name="precision_max" class="o_address_zip" required="1"-->
<!-- options="{'format': false}"/>-->
<!-- </div>-->
<!-- <field name="lead_screw" required="1"/>-->
<!-- <field name="guide_rail" required="1"/>-->
<field name="number_of_axles" required="1" widget="radio"
options="{'horizontal': true}"/>
<label for="x_axis" string="加工行程(mm)"
attrs="{'invisible': [('number_of_axles', '=', False)]}"/>
<div class="test_model"
attrs="{'invisible': [('number_of_axles', '=', False)]}">
<label for="x_axis" string="x"/>
<field name="x_axis" class="o_address_zip" required="1"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="y_axis" string="y"/>
<field name="y_axis" class="o_address_zip" required="1"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="z_axis" string="z"/>
<field name="z_axis" class="o_address_zip" required="1"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="a_axis" string="a"
attrs="{'invisible': [('number_of_axles', '=', '三轴')]}"/>
<field name="a_axis" class="o_address_zip"
attrs="{'invisible': [('number_of_axles', '=', '三轴')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="b_axis" string="b"
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴'])]}"/>
<field name="b_axis" class="o_address_zip"
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴'])]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="c_axis" string="c"
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴','五轴'])]}"/>
<field name="c_axis" class="o_address_zip"
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴','五轴'])]}"
options="{'format': false}"/>
</div>
<field name="tool_quality_max"
attrs="{'required': [('equipment_type', '=', '机床')]}"/>
</group>
</group>
<group string="主轴">
<field name="taper_type_id" required="1"/>
<label for="distance_min" string="主轴端面-工作台距离(mm)"/>
<div class="test_model">
<label for="distance_min" string="最小(min)"/>
<field name="distance_min" class="o_address_zip"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="distance_max" string="最大(max)"/>
<field name="distance_max" class="o_address_zip"
options="{'format': false}"/>
</div>
<field name="rotate_speed" string="主轴最高转速(r/min)"
options="{'format': false}"/>
<field name="spindle_center_distance"/>
<field name="spindle_continuous_power"/>
<field name="spindle_peak_power"/>
<field name="spindle_sustained_torque"/>
<field name="spindle_peak_torque"/>
<field name="heightened_way"/>
<field name="linear_axis_guides_type"/>
<field name="axis_driven_type"/>
<!-- <field name="distance" required="1"/>-->
</group>
<group string="刀具">
<!-- <field name="knife_type" required="1"/>-->
<field name="number_of_knife_library" required="1" options="{'format': false}"/>
<!-- <field name="tool_speed" required="1"/>-->
<field name="tool_full_diameter_max"/>
<field name="tool_perimeter_diameter_max"/>
<field name="tool_long_max"/>
<!-- <label for="tool_diameter_min" string="刀具刀径(mm)"/>-->
<!-- <div class="test_model">-->
<!-- <label for="tool_diameter_min" string="最小(min)"/>-->
<!-- <field name="tool_diameter_min" class="o_address_zip" required="1"-->
<!-- options="{'format': false}"/>-->
<!-- <span>&amp;nbsp;</span>-->
<!-- <label for="tool_diameter_max" string="最大(max)"/>-->
<!-- <field name="tool_diameter_max" class="o_address_zip" required="1"-->
<!-- options="{'format': false}"/>-->
<!-- </div>-->
<field name="tool_quality_max"/>
<field name="T_tool_time"/>
<field name="C_tool_time"/>
</group>
<group string="进给参数">
<field name="X_axis_rapid_traverse_speed"/>
<field name="Y_axis_rapid_traverse_speed"/>
<field name="Z_axis_rapid_traverse_speed"/>
<field name="a_axis_rapid_traverse_speed"/>
<field name="b_axis_rapid_traverse_speed"/>
<field name="c_axis_rapid_traverse_speed"/>
<field name="straight_cutting_feed_rate"/>
<field name="rotary_cutting_feed_rate"/>
</group>
<group string="精度参数">
<field name="X_precision"/>
<field name="X_precision_repeat"/>
<field name="Y_precision"/>
<field name="Y_precision_repeat"/>
<field name="Z_precision"/>
<field name="Z_precision_repeat"/>
<field name="a_precision"/>
<field name="a_precision_repeat"/>
<field name="b_precision"/>
<field name="b_precision_repeat"/>
<field name="c_precision"/>
<field name="c_precision_repeat"/>
</group>
</group>
</page>
@@ -923,22 +920,34 @@
</group>
</page>
<page string="加工能力" attrs="{'invisible': [('equipment_type', '!=', '机床')]}">
<field name='image_id' widget="custom_many2many_checkboxes">
</xpath>
<xpath expr="//notebook" position="before">
<group string="加工能力">
<div>
<field name='image_id' widget="custom_many2many_checkboxes" string="">
<tree>
<field name="name"/>
<field name="image" widget="image"
options="{'size': [100, 100], 'click enlarge': True}"/>
</tree>
</field>
</div>
</group>
<group string="冷却方式">
<div>
<field name='image_lq_id' widget="custom_many2many_checkboxes" string="">
</page>
<tree>
<field name="name"/>
<field name="image" widget="image"
options="{'size': [100, 100], 'click enlarge': True}"/>
</tree>
</field>
</div>
</group>
</xpath>
<xpath expr="//field[@name='next_action_date']" position="before">
@@ -1185,13 +1194,12 @@
sequence="2"/>
<menuitem
id="maintenance.menu_m_dashboard"
name="设备清单"
parent="maintenance.menu_maintenance_title"
groups="maintenance.group_equipment_manager,base.group_user"
action="hr_equipment_action1"
sequence="0"/>
id="maintenance.menu_m_dashboard"
name="设备清单"
parent="maintenance.menu_maintenance_title"
groups="maintenance.group_equipment_manager,base.group_user"
action="hr_equipment_action1"
sequence="0"/>
</odoo>

View File

@@ -13,6 +13,7 @@ access_sf_production_line,sf.production.line,model_sf_production_line,sf_base.gr
access_sf_production_line_manager,sf.production.line,model_sf_production_line,sf_base.group_sf_mrp_manager,1,1,1,0
access_maintenance_equipment_tool,maintenance_equipment_tool,model_maintenance_equipment_tool,sf_base.group_sf_mrp_user,1,0,0,0
access_maintenance_equipment_tool_manager,maintenance_equipment_tool,model_maintenance_equipment_tool,sf_base.group_sf_mrp_manager,1,1,1,0
access_maintenance_equipment_tool_equipment_manager,maintenance_equipment_tool,model_maintenance_equipment_tool,sf_maintenance.sf_group_equipment_user,1,1,1,0
access_mrp_production,mrp_production,model_mrp_production,sf_base.group_sf_mrp_user,1,0,0,0
access_mrp_production_manager,mrp_production,model_mrp_production,sf_base.group_sf_mrp_manager,1,1,1,0
access_mrp_workorder,mrp_workorder,model_mrp_workorder,sf_base.group_sf_mrp_user,1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
13 access_sf_production_line_manager sf.production.line model_sf_production_line sf_base.group_sf_mrp_manager 1 1 1 0
14 access_maintenance_equipment_tool maintenance_equipment_tool model_maintenance_equipment_tool sf_base.group_sf_mrp_user 1 0 0 0
15 access_maintenance_equipment_tool_manager maintenance_equipment_tool model_maintenance_equipment_tool sf_base.group_sf_mrp_manager 1 1 1 0
16 access_maintenance_equipment_tool_equipment_manager maintenance_equipment_tool model_maintenance_equipment_tool sf_maintenance.sf_group_equipment_user 1 1 1 0
17 access_mrp_production mrp_production model_mrp_production sf_base.group_sf_mrp_user 1 0 0 0
18 access_mrp_production_manager mrp_production model_mrp_production sf_base.group_sf_mrp_manager 1 1 1 0
19 access_mrp_workorder mrp_workorder model_mrp_workorder sf_base.group_sf_mrp_user 1 0 0 0

View File

@@ -615,13 +615,21 @@ class MachineToolType(models.Model):
result = json.loads(r['result'])
if result['status'] == 1:
for item in result['machine_tool_type_yesterday_list']:
if item.get('machine_tool_picture'):
image = base64.b64decode(item['machine_tool_picture'])
else:
image = ''
taper_type_id = self.env['spindle.taper.type'].search([('name', '=', item['taper_type_id'])])
machine_tool_type = self.search([("code", '=', item['code'])])
control_system = self.env['sf.machine.control_system'].search(
[('code', '=', item['control_system_id'])])
jg_image_id = self.env['maintenance.equipment.image'].search([('name', 'in', item['jg_image_id'])])
lq_image_id = self.env['maintenance.equipment.image'].search([('name', 'in', item['lq_image_id'])])
brand = self.env['sf.machine.brand'].search([('code', '=', item['brand_id'])])
category = self.env['sf.machine_tool.category'].search([('code', '=', item['machine_tool_category'])])
if machine_tool_type:
machine_tool_type.write({
machine_tool_type.update({
'code': item['code'],
"name": item['name'],
"number_of_knife_library": item['number_of_knife_library'],
"rotate_speed": item['rotate_speed'],
@@ -633,40 +641,78 @@ class MachineToolType(models.Model):
"knife_type": item['knife_type'],
"c_axis": item['c_axis'],
"remark": item['remark'],
"precision_min": item['precision_min'],
"precision_max": item['precision_max'],
# "precision_min": item['precision_min'],
# "precision_max": item['precision_max'],
'control_system_id': control_system.id,
"active": item['active'],
'brand_id': brand.id,
'machine_tool_picture': '' if not item['machine_tool_picture'] else base64.b64decode(
item['machine_tool_picture']),
'machine_tool_picture': image,
"heightened_way": item['heightened_way'],
"workpiece_load": item['workpiece_load'],
"lead_screw": item['lead_screw'],
#"lead_screw": item['lead_screw'],
"workbench_L": item['workbench_L'],
"workbench_W": item['workbench_W'],
"guide_rail": item['guide_rail'],
#"guide_rail": item['guide_rail'],
"machine_tool_L": item['machine_tool_L'],
"machine_tool_W": item['machine_tool_W'],
"machine_tool_H": item['machine_tool_H'],
"feed_speed": item['feed_speed'],
"tool_speed": item['tool_speed'],
#"feed_speed": item['feed_speed'],
#"tool_speed": item['tool_speed'],
"distance_min": item['distance_min'],
"distance_max": item['distance_max'],
"taper": item['taper'],
"torque": item['torque'],
"motor_power": item['motor_power'],
#"taper": item['taper'],
#"torque": item['torque'],
#"motor_power": item['motor_power'],
"tool_quality_max": item['tool_quality_max'],
"tool_long_max": item['tool_long_max'],
"tool_diameter_max": item['tool_diameter_max'],
"tool_diameter_min": item['tool_diameter_min'],
#"tool_diameter_max": item['tool_diameter_max'],
#"tool_diameter_min": item['tool_diameter_min'],
"machine_tool_category": category.id,
'taper_type_id': taper_type_id.id,
"function_type": item['function_type'],
"a_axis": item['a_axis'],
"T_trough_num": item['T_trough_num'],
"T_trough_wide": item['T_trough_wide'],
"T_trough_distance": item['T_trough_distance'],
"spindle_center_distance": item['spindle_center_distance'],
"spindle_continuous_power": item['spindle_continuous_power'],
"spindle_peak_power": item['spindle_peak_power'],
"spindle_sustained_torque": item['spindle_sustained_torque'],
"spindle_peak_torque": item['spindle_peak_torque'],
"linear_axis_guides_type": item['linear_axis_guides_type'],
"axis_driven_type": item['axis_driven_type'],
"X_axis_rapid_traverse_speed": item['X_axis_rapid_traverse_speed'],
"Y_axis_rapid_traverse_speed": item['Y_axis_rapid_traverse_speed'],
"Z_axis_rapid_traverse_speed": item['Z_axis_rapid_traverse_speed'],
"a_axis_rapid_traverse_speed": item['a_axis_rapid_traverse_speed'],
"b_axis_rapid_traverse_speed": item['b_axis_rapid_traverse_speed'],
"c_axis_rapid_traverse_speed": item['c_axis_rapid_traverse_speed'],
"straight_cutting_feed_rate": item['straight_cutting_feed_rate'],
"rotary_cutting_feed_rate": item['rotary_cutting_feed_rate'],
"X_precision": item['X_precision'],
"X_precision_repeat": item['X_precision_repeat'],
"Y_precision": item['Y_precision'],
"Y_precision_repeat": item['Y_precision_repeat'],
"Z_precision": item['Z_precision'],
"Z_precision_repeat": item['Z_precision_repeat'],
"a_precision": item['a_precision'],
"a_precision_repeat": item['a_precision_repeat'],
"b_precision": item['b_precision'],
"b_precision_repeat": item['b_precision_repeat'],
"c_precision": item['c_precision'],
"c_precision_repeat": item['c_precision_repeat'],
"tool_full_diameter_max": item['tool_full_diameter_max'],
"tool_perimeter_diameter_max": item['tool_perimeter_diameter_max'],
"T_tool_time": item['T_tool_time'],
"C_tool_time": item['C_tool_time'],
"jg_image_id": jg_image_id.ids,
"lq_image_id": lq_image_id.ids,
})
else:
self.create({
'code': item['code'],
"name": item['name'],
"code": item['code'],
"knife_type": item['knife_type'],
"number_of_knife_library": item['number_of_knife_library'],
"rotate_speed": item['rotate_speed'],
"number_of_axles": item['number_of_axles'],
@@ -674,36 +720,76 @@ class MachineToolType(models.Model):
"y_axis": item['y_axis'],
"z_axis": item['z_axis'],
"b_axis": item['b_axis'],
"knife_type": item['knife_type'],
"c_axis": item['c_axis'],
"remark": item['remark'],
"precision_min": item['precision_min'],
"precision_max": item['precision_max'],
# "precision_min": item['precision_min'],
# "precision_max": item['precision_max'],
'control_system_id': control_system.id,
"active": item['active'],
'brand_id': brand.id,
'machine_tool_picture': '' if not item['machine_tool_picture'] else item[
'machine_tool_picture'].encode('utf-8'),
'machine_tool_picture': image,
"heightened_way": item['heightened_way'],
"workpiece_load": item['workpiece_load'],
"lead_screw": item['lead_screw'],
#"lead_screw": item['lead_screw'],
"workbench_L": item['workbench_L'],
"workbench_W": item['workbench_W'],
"guide_rail": item['guide_rail'],
#"guide_rail": item['guide_rail'],
"machine_tool_L": item['machine_tool_L'],
"machine_tool_W": item['machine_tool_W'],
"machine_tool_H": item['machine_tool_H'],
"feed_speed": item['feed_speed'],
"tool_speed": item['tool_speed'],
#"feed_speed": item['feed_speed'],
#"tool_speed": item['tool_speed'],
"distance_min": item['distance_min'],
"distance_max": item['distance_max'],
"taper": item['taper'],
"torque": item['torque'],
"motor_power": item['motor_power'],
#"taper": item['taper'],
#"torque": item['torque'],
#"motor_power": item['motor_power'],
"tool_quality_max": item['tool_quality_max'],
"tool_long_max": item['tool_long_max'],
"tool_diameter_max": item['tool_diameter_max'],
"tool_diameter_min": item['tool_diameter_min'],
#"tool_diameter_max": item['tool_diameter_max'],
#"tool_diameter_min": item['tool_diameter_min'],
"machine_tool_category": category.id,
'taper_type_id': taper_type_id.id,
"function_type": item['function_type'],
"a_axis": item['a_axis'],
"T_trough_num": item['T_trough_num'],
"T_trough_wide": item['T_trough_wide'],
"T_trough_distance": item['T_trough_distance'],
"spindle_center_distance": item['spindle_center_distance'],
"spindle_continuous_power": item['spindle_continuous_power'],
"spindle_peak_power": item['spindle_peak_power'],
"spindle_sustained_torque": item['spindle_sustained_torque'],
"spindle_peak_torque": item['spindle_peak_torque'],
"linear_axis_guides_type": item['linear_axis_guides_type'],
"axis_driven_type": item['axis_driven_type'],
"X_axis_rapid_traverse_speed": item['X_axis_rapid_traverse_speed'],
"Y_axis_rapid_traverse_speed": item['Y_axis_rapid_traverse_speed'],
"Z_axis_rapid_traverse_speed": item['Z_axis_rapid_traverse_speed'],
"a_axis_rapid_traverse_speed": item['a_axis_rapid_traverse_speed'],
"b_axis_rapid_traverse_speed": item['b_axis_rapid_traverse_speed'],
"c_axis_rapid_traverse_speed": item['c_axis_rapid_traverse_speed'],
"straight_cutting_feed_rate": item['straight_cutting_feed_rate'],
"rotary_cutting_feed_rate": item['rotary_cutting_feed_rate'],
"X_precision": item['X_precision'],
"X_precision_repeat": item['X_precision_repeat'],
"Y_precision": item['Y_precision'],
"Y_precision_repeat": item['Y_precision_repeat'],
"Z_precision": item['Z_precision'],
"Z_precision_repeat": item['Z_precision_repeat'],
"a_precision": item['a_precision'],
"a_precision_repeat": item['a_precision_repeat'],
"b_precision": item['b_precision'],
"b_precision_repeat": item['b_precision_repeat'],
"c_precision": item['c_precision'],
"c_precision_repeat": item['c_precision_repeat'],
"tool_full_diameter_max": item['tool_full_diameter_max'],
"tool_perimeter_diameter_max": item['tool_perimeter_diameter_max'],
"T_tool_time": item['T_tool_time'],
"C_tool_time": item['C_tool_time'],
"jg_image_id": jg_image_id.ids,
"lq_image_id": lq_image_id.ids,
})
else:
raise ValidationError("机床型号认证未通过")
@@ -722,15 +808,24 @@ class MachineToolType(models.Model):
image = base64.b64decode(item['machine_tool_picture'])
else:
image = ''
taper_type_id = self.env['spindle.taper.type'].search([('name', '=', item['taper_type_id'])])
if not taper_type_id:
taper_type_id = self.env['spindle.taper.type'].create({
'name': item['taper_type_id']
})
machine_tool_type = self.search([("code", '=', item['code'])])
control_system = self.env['sf.machine.control_system'].search(
[('code', '=', item['control_system_id'])])
brand = self.env['sf.machine.brand'].search([('code', '=', item['brand_id'])])
jg_image_id = self.env['maintenance.equipment.image'].search([('name', 'in', item['jg_image_id'])])
lq_image_id = self.env['maintenance.equipment.image'].search([('name', 'in', item['lq_image_id'])])
category = self.env['sf.machine_tool.category'].search([('code', '=', item['machine_tool_category'])])
if not machine_tool_type:
self.create({
'code': item['code'],
"name": item['name'],
"code": item['code'],
"number_of_knife_library": item['number_of_knife_library'],
"rotate_speed": item['rotate_speed'],
"number_of_axles": item['number_of_axles'],
@@ -738,39 +833,81 @@ class MachineToolType(models.Model):
"y_axis": item['y_axis'],
"z_axis": item['z_axis'],
"b_axis": item['b_axis'],
"c_axis": item['c_axis'],
"knife_type": item['knife_type'],
"c_axis": item['c_axis'],
"remark": item['remark'],
"precision_min": item['precision_min'],
"precision_max": item['precision_max'],
# "precision_min": item['precision_min'],
# "precision_max": item['precision_max'],
'control_system_id': control_system.id,
"active": item['active'],
'brand_id': brand.id,
'machine_tool_picture': image,
"heightened_way": item['heightened_way'],
"workpiece_load": item['workpiece_load'],
"lead_screw": item['lead_screw'],
#"lead_screw": item['lead_screw'],
"workbench_L": item['workbench_L'],
"workbench_W": item['workbench_W'],
"guide_rail": item['guide_rail'],
#"guide_rail": item['guide_rail'],
"machine_tool_L": item['machine_tool_L'],
"machine_tool_W": item['machine_tool_W'],
"machine_tool_H": item['machine_tool_H'],
"feed_speed": item['feed_speed'],
"tool_speed": item['tool_speed'],
#"feed_speed": item['feed_speed'],
#"tool_speed": item['tool_speed'],
"distance_min": item['distance_min'],
"distance_max": item['distance_max'],
"taper": item['taper'],
"torque": item['torque'],
"motor_power": item['motor_power'],
#"taper": item['taper'],
#"torque": item['torque'],
#"motor_power": item['motor_power'],
"tool_quality_max": item['tool_quality_max'],
"tool_long_max": item['tool_long_max'],
"tool_diameter_max": item['tool_diameter_max'],
"tool_diameter_min": item['tool_diameter_min'],
#"tool_diameter_max": item['tool_diameter_max'],
#"tool_diameter_min": item['tool_diameter_min'],
"machine_tool_category": category.id,
'taper_type_id': taper_type_id.id,
"function_type": item['function_type'],
"a_axis": item['a_axis'],
"T_trough_num": item['T_trough_num'],
"T_trough_wide": item['T_trough_wide'],
"T_trough_distance": item['T_trough_distance'],
"spindle_center_distance": item['spindle_center_distance'],
"spindle_continuous_power": item['spindle_continuous_power'],
"spindle_peak_power": item['spindle_peak_power'],
"spindle_sustained_torque": item['spindle_sustained_torque'],
"spindle_peak_torque": item['spindle_peak_torque'],
"linear_axis_guides_type": item['linear_axis_guides_type'],
"axis_driven_type": item['axis_driven_type'],
"X_axis_rapid_traverse_speed": item['X_axis_rapid_traverse_speed'],
"Y_axis_rapid_traverse_speed": item['Y_axis_rapid_traverse_speed'],
"Z_axis_rapid_traverse_speed": item['Z_axis_rapid_traverse_speed'],
"a_axis_rapid_traverse_speed": item['a_axis_rapid_traverse_speed'],
"b_axis_rapid_traverse_speed": item['b_axis_rapid_traverse_speed'],
"c_axis_rapid_traverse_speed": item['c_axis_rapid_traverse_speed'],
"straight_cutting_feed_rate": item['straight_cutting_feed_rate'],
"rotary_cutting_feed_rate": item['rotary_cutting_feed_rate'],
"X_precision": item['X_precision'],
"X_precision_repeat": item['X_precision_repeat'],
"Y_precision": item['Y_precision'],
"Y_precision_repeat": item['Y_precision_repeat'],
"Z_precision": item['Z_precision'],
"Z_precision_repeat": item['Z_precision_repeat'],
"a_precision": item['a_precision'],
"a_precision_repeat": item['a_precision_repeat'],
"b_precision": item['b_precision'],
"b_precision_repeat": item['b_precision_repeat'],
"c_precision": item['c_precision'],
"c_precision_repeat": item['c_precision_repeat'],
"tool_full_diameter_max": item['tool_full_diameter_max'],
"tool_perimeter_diameter_max": item['tool_perimeter_diameter_max'],
"T_tool_time": item['T_tool_time'],
"C_tool_time": item['C_tool_time'],
"jg_image_id": jg_image_id.ids,
"lq_image_id": lq_image_id.ids,
})
else:
machine_tool_type.write({
machine_tool_type.update({
'code': item['code'],
"name": item['name'],
"number_of_knife_library": item['number_of_knife_library'],
"rotate_speed": item['rotate_speed'],
@@ -782,33 +919,73 @@ class MachineToolType(models.Model):
"knife_type": item['knife_type'],
"c_axis": item['c_axis'],
"remark": item['remark'],
"precision_min": item['precision_min'],
"precision_max": item['precision_max'],
# "precision_min": item['precision_min'],
# "precision_max": item['precision_max'],
'control_system_id': control_system.id,
"active": item['active'],
'brand_id': brand.id,
'machine_tool_picture': image,
"heightened_way": item['heightened_way'],
"workpiece_load": item['workpiece_load'],
"lead_screw": item['lead_screw'],
#"lead_screw": item['lead_screw'],
"workbench_L": item['workbench_L'],
"workbench_W": item['workbench_W'],
"guide_rail": item['guide_rail'],
#"guide_rail": item['guide_rail'],
"machine_tool_L": item['machine_tool_L'],
"machine_tool_W": item['machine_tool_W'],
"machine_tool_H": item['machine_tool_H'],
"feed_speed": item['feed_speed'],
"tool_speed": item['tool_speed'],
#"feed_speed": item['feed_speed'],
#"tool_speed": item['tool_speed'],
"distance_min": item['distance_min'],
"distance_max": item['distance_max'],
"taper": item['taper'],
"torque": item['torque'],
"motor_power": item['motor_power'],
#"taper": item['taper'],
#"torque": item['torque'],
#"motor_power": item['motor_power'],
"tool_quality_max": item['tool_quality_max'],
"tool_long_max": item['tool_long_max'],
"tool_diameter_max": item['tool_diameter_max'],
"tool_diameter_min": item['tool_diameter_min'],
#"tool_diameter_max": item['tool_diameter_max'],
#"tool_diameter_min": item['tool_diameter_min'],
"machine_tool_category": category.id,
'taper_type_id': taper_type_id.id,
"function_type": item['function_type'],
"a_axis": item['a_axis'],
"T_trough_num": item['T_trough_num'],
"T_trough_wide": item['T_trough_wide'],
"T_trough_distance": item['T_trough_distance'],
"spindle_center_distance": item['spindle_center_distance'],
"spindle_continuous_power": item['spindle_continuous_power'],
"spindle_peak_power": item['spindle_peak_power'],
"spindle_sustained_torque": item['spindle_sustained_torque'],
"spindle_peak_torque": item['spindle_peak_torque'],
"linear_axis_guides_type": item['linear_axis_guides_type'],
"axis_driven_type": item['axis_driven_type'],
"X_axis_rapid_traverse_speed": item['X_axis_rapid_traverse_speed'],
"Y_axis_rapid_traverse_speed": item['Y_axis_rapid_traverse_speed'],
"Z_axis_rapid_traverse_speed": item['Z_axis_rapid_traverse_speed'],
"a_axis_rapid_traverse_speed": item['a_axis_rapid_traverse_speed'],
"b_axis_rapid_traverse_speed": item['b_axis_rapid_traverse_speed'],
"c_axis_rapid_traverse_speed": item['c_axis_rapid_traverse_speed'],
"straight_cutting_feed_rate": item['straight_cutting_feed_rate'],
"rotary_cutting_feed_rate": item['rotary_cutting_feed_rate'],
"X_precision": item['X_precision'],
"X_precision_repeat": item['X_precision_repeat'],
"Y_precision": item['Y_precision'],
"Y_precision_repeat": item['Y_precision_repeat'],
"Z_precision": item['Z_precision'],
"Z_precision_repeat": item['Z_precision_repeat'],
"a_precision": item['a_precision'],
"a_precision_repeat": item['a_precision_repeat'],
"b_precision": item['b_precision'],
"b_precision_repeat": item['b_precision_repeat'],
"c_precision": item['c_precision'],
"c_precision_repeat": item['c_precision_repeat'],
"tool_full_diameter_max": item['tool_full_diameter_max'],
"tool_perimeter_diameter_max": item['tool_perimeter_diameter_max'],
"T_tool_time": item['T_tool_time'],
"C_tool_time": item['C_tool_time'],
"jg_image_id": jg_image_id.ids,
"lq_image_id": lq_image_id.ids,
})
else:
raise ValidationError("机床型号认证未通过")