Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/制造-计划优化
# Conflicts: # sf_plan/models/custom_plan.py
This commit is contained in:
@@ -19,6 +19,7 @@ class SfEquipmentSaintenanceStandards(models.Model):
|
|||||||
num = "%04d" % m
|
num = "%04d" % m
|
||||||
return num
|
return num
|
||||||
code = fields.Char(string='编码', default=get_no)
|
code = fields.Char(string='编码', default=get_no)
|
||||||
|
remark = fields.Char('备注')
|
||||||
maintenance_type = fields.Selection([('保养', '保养'), ("检修", "检修")], string='类型', default='保养')
|
maintenance_type = fields.Selection([('保养', '保养'), ("检修", "检修")], string='类型', default='保养')
|
||||||
name = fields.Char(string='名称')
|
name = fields.Char(string='名称')
|
||||||
created_user_id = fields.Many2one('res.users', string='创建人', default=lambda self: self.env.user)
|
created_user_id = fields.Many2one('res.users', string='创建人', default=lambda self: self.env.user)
|
||||||
@@ -26,7 +27,7 @@ class SfEquipmentSaintenanceStandards(models.Model):
|
|||||||
maintenance_equipment_ids = fields.Many2many(
|
maintenance_equipment_ids = fields.Many2many(
|
||||||
'maintenance.equipment',
|
'maintenance.equipment',
|
||||||
'sf_maintenance_equipment_ids',
|
'sf_maintenance_equipment_ids',
|
||||||
string='设备',
|
string='适用设备',
|
||||||
domain="[('category_id', '=', maintenance_equipment_category_id)]"
|
domain="[('category_id', '=', maintenance_equipment_category_id)]"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -42,23 +43,29 @@ class SfEquipmentSaintenanceStandards(models.Model):
|
|||||||
if record.maintenance_type == '检修':
|
if record.maintenance_type == '检修':
|
||||||
record.write({'overhaul_ids': [(6, 0, record.maintenance_equipment_ids.ids)]})
|
record.write({'overhaul_ids': [(6, 0, record.maintenance_equipment_ids.ids)]})
|
||||||
|
|
||||||
@api.onchange("maintenance_standards_ids")
|
# @api.onchange("maintenance_standards_ids")
|
||||||
def _reset_work_order_sequence(self):
|
# def _reset_work_order_sequence(self):
|
||||||
for rec in self:
|
# for rec in self:
|
||||||
current_sequence = 1
|
# current_sequence = 1
|
||||||
for work in rec.maintenance_standards_ids:
|
# for work in rec.maintenance_standards_ids:
|
||||||
work.sequence = current_sequence
|
# work.sequence = current_sequence
|
||||||
current_sequence += 1
|
# current_sequence += 1
|
||||||
|
|
||||||
class SfSaintenanceStandards(models.Model):
|
class SfSaintenanceStandards(models.Model):
|
||||||
_name = 'maintenance.standards'
|
_name = 'maintenance.standards'
|
||||||
_description = '维保项目'
|
_description = '维保项目'
|
||||||
|
_order = 'sequence'
|
||||||
|
|
||||||
|
sequence = fields.Integer('序号')
|
||||||
name = fields.Char('维保项目')
|
name = fields.Char('维保项目')
|
||||||
maintenance_standards = fields.Char('维保标准')
|
maintenance_standards = fields.Char('维保标准')
|
||||||
|
fault_type = fields.Selection(
|
||||||
|
[('电气类', '电气类'), ('机械类', '机械类'), ('程序类', '程序类'), ('系统类', '系统类')], string='类别')
|
||||||
equipment_maintenance_standards_id = fields.Many2one('equipment.maintenance.standards', string='设备维保标准')
|
equipment_maintenance_standards_id = fields.Many2one('equipment.maintenance.standards', string='设备维保标准')
|
||||||
maintenance_request_id = fields.Many2one('maintenance.request', string='设备维保计划')
|
maintenance_request_id = fields.Many2one('maintenance.request', string='设备维保计划')
|
||||||
images = fields.One2many('maintenance.standard.image', 'standard_id', string='反馈图片')
|
images = fields.One2many('maintenance.standard.image', 'standard_id', string='反馈图片')
|
||||||
|
Period = fields.Integer('周期/频次(天)')
|
||||||
|
remark = fields.Char('备注说明')
|
||||||
|
|
||||||
|
|
||||||
class MaintenanceStandardImage(models.Model):
|
class MaintenanceStandardImage(models.Model):
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ class SfMaintenanceEquipment(models.Model):
|
|||||||
overhaul_period = fields.Integer(string='预防检修频次')
|
overhaul_period = fields.Integer(string='预防检修频次')
|
||||||
overhaul_duration = fields.Float(string='检修时长')
|
overhaul_duration = fields.Float(string='检修时长')
|
||||||
|
|
||||||
|
|
||||||
overhaul_id = fields.Many2one('equipment.maintenance.standards', string='设备检修标准',
|
overhaul_id = fields.Many2one('equipment.maintenance.standards', string='设备检修标准',
|
||||||
domain="[('maintenance_type','=','检修')]")
|
domain="[('maintenance_type','=','检修')]")
|
||||||
|
|
||||||
@@ -474,3 +475,15 @@ class SfMaintenanceEquipment(models.Model):
|
|||||||
('sf_maintenance_type', '=', '检修')])
|
('sf_maintenance_type', '=', '检修')])
|
||||||
if not next_requests:
|
if not next_requests:
|
||||||
equipment._create_new_request1(equipment.overhaul_date)
|
equipment._create_new_request1(equipment.overhaul_date)
|
||||||
|
|
||||||
|
image_id = fields.Many2many('maintenance.equipment.image', 'equipment_id', string='设备图文')
|
||||||
|
|
||||||
|
class MaintenanceStandardImage(models.Model):
|
||||||
|
_name = 'maintenance.equipment.image'
|
||||||
|
_description = '设备图文展示'
|
||||||
|
|
||||||
|
|
||||||
|
active = fields.Boolean('有效', default=True)
|
||||||
|
name = fields.Char('加工能力')
|
||||||
|
image = fields.Binary(string='设备图文')
|
||||||
|
equipment_id = fields.Many2many('maintenance.equipment', 'image_id', string='设备')
|
||||||
@@ -22,3 +22,5 @@ class SfMaintenanceLogs(models.Model):
|
|||||||
recovery_time = fields.Datetime(string='复原时间')
|
recovery_time = fields.Datetime(string='复原时间')
|
||||||
fault_duration = fields.Float(string='故障时长')
|
fault_duration = fields.Float(string='故障时长')
|
||||||
note = fields.Text(string='备注')
|
note = fields.Text(string='备注')
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ access_sf_maintenance_logs,sf_maintenance_logs,model_sf_maintenance_logs,base.gr
|
|||||||
access_maintenance_equipment,maintenance_equipment,model_maintenance_equipment,base.group_user,1,1,1,1
|
access_maintenance_equipment,maintenance_equipment,model_maintenance_equipment,base.group_user,1,1,1,1
|
||||||
access_maintenance_standards,maintenance_standards,model_maintenance_standards,base.group_user,1,1,1,1
|
access_maintenance_standards,maintenance_standards,model_maintenance_standards,base.group_user,1,1,1,1
|
||||||
access_maintenance_standard_image,maintenance_standard_image,model_maintenance_standard_image,base.group_user,1,1,1,1
|
access_maintenance_standard_image,maintenance_standard_image,model_maintenance_standard_image,base.group_user,1,1,1,1
|
||||||
|
access_maintenance_equipment_image,maintenance_equipment_image,model_maintenance_equipment_image,base.group_user,1,1,1,1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
|
@@ -21,14 +21,26 @@
|
|||||||
<group>
|
<group>
|
||||||
<field name="maintenance_type" required="1"/>
|
<field name="maintenance_type" required="1"/>
|
||||||
<field name="created_user_id"/>
|
<field name="created_user_id"/>
|
||||||
|
<field name="remark"/>
|
||||||
|
|
||||||
</group>
|
</group>
|
||||||
|
|
||||||
</group>
|
</group>
|
||||||
<group>
|
<group>
|
||||||
<field name="maintenance_equipment_ids" widget="many2many_tags" attrs="{'invisible': [('maintenance_equipment_category_id', '=', False)]}"/>
|
<field name="maintenance_equipment_ids" widget="many2many_tags" attrs="{'invisible': [('maintenance_equipment_category_id', '=', False)]}"/>
|
||||||
</group>
|
</group>
|
||||||
|
<notebook>
|
||||||
|
<page string="维保项目">
|
||||||
|
|
||||||
|
<field name="maintenance_standards_ids">
|
||||||
|
<tree editable="bottom">
|
||||||
|
<field name="name"/>
|
||||||
|
<field name="fault_type"/>
|
||||||
|
<field name="maintenance_standards"/>
|
||||||
|
<field name="Period"/>
|
||||||
|
</tree>
|
||||||
|
</field>
|
||||||
|
</page>
|
||||||
|
</notebook>
|
||||||
</sheet>
|
</sheet>
|
||||||
</form>
|
</form>
|
||||||
</field>
|
</field>
|
||||||
@@ -46,6 +58,7 @@
|
|||||||
<field name="maintenance_equipment_ids"/>
|
<field name="maintenance_equipment_ids"/>
|
||||||
<field name="created_user_id"/>
|
<field name="created_user_id"/>
|
||||||
<field name="create_date" string="创建时间"/>
|
<field name="create_date" string="创建时间"/>
|
||||||
|
<field name="remark"/>
|
||||||
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
|
|||||||
@@ -34,25 +34,39 @@
|
|||||||
<field name="model">sf.maintenance.logs</field>
|
<field name="model">sf.maintenance.logs</field>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<form string="设备故障日志">
|
<form string="设备故障日志">
|
||||||
|
<header>
|
||||||
|
<field name="alarm_level" widget="statusbar"/>
|
||||||
|
</header>
|
||||||
|
<sheet>
|
||||||
|
<div class="oe_title">
|
||||||
|
<h1>
|
||||||
|
<field name="code" readonly="1"/>
|
||||||
|
</h1>
|
||||||
|
</div>
|
||||||
<group>
|
<group>
|
||||||
<field name="code"/>
|
<group>
|
||||||
|
|
||||||
<field name="name"/>
|
<field name="name"/>
|
||||||
<field name="type"/>
|
<field name="type" required="1" widget="radio" options="{'horizontal': true}"/>
|
||||||
<field name="brand"/>
|
<field name="brand"/>
|
||||||
<field name="maintenance_equipment_id"/>
|
<field name="maintenance_equipment_id"/>
|
||||||
<field name="code_location"/>
|
<field name="code_location"/>
|
||||||
<field name="fault_type"/>
|
<field name="fault_type" required="1" widget="radio" options="{'horizontal': true}"/>
|
||||||
<field name="fault_code"/>
|
<field name="fault_code"/>
|
||||||
<field name="fault_alarm_info"/>
|
|
||||||
<field name="alarm_level"/>
|
|
||||||
<field name="alarm_time"/>
|
|
||||||
<field name="alarm_way"/>
|
|
||||||
<field name="fault_process"/>
|
<field name="fault_process"/>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<field name="fault_alarm_info"/>
|
||||||
|
<field name="alarm_time"/>
|
||||||
|
<field name="alarm_way" required="1" widget="radio" options="{'horizontal': true}"/>
|
||||||
<field name="operator"/>
|
<field name="operator"/>
|
||||||
<field name="recovery_time"/>
|
<field name="recovery_time"/>
|
||||||
<field name="fault_duration"/>
|
<field name="fault_duration"/>
|
||||||
<field name="note"/>
|
<field name="note"/>
|
||||||
|
|
||||||
</group>
|
</group>
|
||||||
|
</group>
|
||||||
|
</sheet>
|
||||||
</form>
|
</form>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|||||||
@@ -24,9 +24,11 @@
|
|||||||
<page string="维保标准" attrs="{'invisible': [('equipment_maintenance_id', '=', False)]}">
|
<page string="维保标准" attrs="{'invisible': [('equipment_maintenance_id', '=', False)]}">
|
||||||
<field name="maintenance_standards" widget="ony2many">
|
<field name="maintenance_standards" widget="ony2many">
|
||||||
<tree>
|
<tree>
|
||||||
|
<field name="sequence"/>
|
||||||
<field name="name"/>
|
<field name="name"/>
|
||||||
<field name="maintenance_standards"/>
|
<field name="maintenance_standards"/>
|
||||||
<field name="images"/>
|
<field name="images"/>
|
||||||
|
<field name="remark"/>
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
|
|
||||||
@@ -78,8 +80,16 @@
|
|||||||
<form string="设备维保项目">
|
<form string="设备维保项目">
|
||||||
<sheet>
|
<sheet>
|
||||||
<group>
|
<group>
|
||||||
|
<group>
|
||||||
|
<field name="sequence"/>
|
||||||
<field name="name"/>
|
<field name="name"/>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
<field name="maintenance_standards"/>
|
<field name="maintenance_standards"/>
|
||||||
|
<field name="remark"/>
|
||||||
|
</group>
|
||||||
|
|
||||||
|
|
||||||
</group>
|
</group>
|
||||||
<notebook>
|
<notebook>
|
||||||
<page string="上传图片">
|
<page string="上传图片">
|
||||||
|
|||||||
@@ -34,6 +34,7 @@
|
|||||||
<!-- <field string="Maintenance" name="maintenance_count" widget="statinfo"/>-->
|
<!-- <field string="Maintenance" name="maintenance_count" widget="statinfo"/>-->
|
||||||
<xpath expr="//div[@name='button_box']" position="inside">
|
<xpath expr="//div[@name='button_box']" position="inside">
|
||||||
|
|
||||||
|
|
||||||
<button name="%(action_maintenance_logs)d"
|
<button name="%(action_maintenance_logs)d"
|
||||||
type="action"
|
type="action"
|
||||||
class="oe_stat_button"
|
class="oe_stat_button"
|
||||||
@@ -46,6 +47,10 @@
|
|||||||
</xpath>
|
</xpath>
|
||||||
<xpath expr="//field[@name='maintenance_team_id']" position="before">
|
<xpath expr="//field[@name='maintenance_team_id']" position="before">
|
||||||
<field name="machine_tool_picture" widget="image"/>
|
<field name="machine_tool_picture" widget="image"/>
|
||||||
|
<label for="enroll_machine_tool"/>
|
||||||
|
<div class="col-12 col-lg-6 o_setting_box" style="white-space: nowrap">
|
||||||
|
<button type="object" class="oe_highlight" name='enroll_machine_tool' string="机床注册"/>
|
||||||
|
</div>
|
||||||
</xpath>
|
</xpath>
|
||||||
<xpath expr="//field[@name='category_id']" position="after">
|
<xpath expr="//field[@name='category_id']" position="after">
|
||||||
<field name="state_zc" readonly="1"/>
|
<field name="state_zc" readonly="1"/>
|
||||||
@@ -172,6 +177,16 @@
|
|||||||
|
|
||||||
</page>
|
</page>
|
||||||
|
|
||||||
|
<page string="图文展示">
|
||||||
|
<field name='image_id' widget="custom_many2many_checkboxes">
|
||||||
|
<tree editable="bottom">
|
||||||
|
<field name="name"/>
|
||||||
|
<field name="image" widget="image"
|
||||||
|
options="{'size': [100, 100], 'click enlarge': True}"/>
|
||||||
|
|
||||||
|
</tree>
|
||||||
|
</field>
|
||||||
|
</page>
|
||||||
|
|
||||||
|
|
||||||
</xpath>
|
</xpath>
|
||||||
@@ -214,7 +229,7 @@
|
|||||||
<group string="其他">
|
<group string="其他">
|
||||||
<field name="remark"/>
|
<field name="remark"/>
|
||||||
</group>
|
</group>
|
||||||
<button type="object" class="oe_highlight" name='enroll_machine_tool' string="机床注册"/>
|
|
||||||
</page>
|
</page>
|
||||||
</xpath>
|
</xpath>
|
||||||
|
|
||||||
@@ -360,7 +375,51 @@
|
|||||||
<!-- name="设备管理"-->
|
<!-- name="设备管理"-->
|
||||||
<!-- parent="menu_maintenance_title_sf"-->
|
<!-- parent="menu_maintenance_title_sf"-->
|
||||||
<!-- groups="maintenance.group_equipment_manager,base.group_user"-->
|
<!-- groups="maintenance.group_equipment_manager,base.group_user"-->
|
||||||
<!-- sequence="1"/>-->
|
<!-- sequence="1"/-->
|
||||||
|
<!-- 设备图文展示-->
|
||||||
|
<record id="view_maintenance_equipment_image_tree" model="ir.ui.view">
|
||||||
|
<field name="name">maintenance.equipment.image.tree</field>
|
||||||
|
<field name="model">maintenance.equipment.image</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<tree string="设备图文">
|
||||||
|
<field name="name"/>
|
||||||
|
<field name="image" widget="image"/>
|
||||||
|
<field name="equipment_id" invisible="1"/>
|
||||||
|
<field name="active" invisible="1"/>
|
||||||
|
</tree>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="view_maintenance_equipment_image_form" model="ir.ui.view">
|
||||||
|
<field name="name">maintenance.equipment.image.form</field>
|
||||||
|
<field name="model">maintenance.equipment.image</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<form string="设备图文">
|
||||||
|
<sheet>
|
||||||
|
<group>
|
||||||
|
<field name="name"/>
|
||||||
|
<field name="image" widget="image"/>
|
||||||
|
<field name="equipment_id" invisible="1"/>
|
||||||
|
<field name="active" invisible="1"/>
|
||||||
|
</group>
|
||||||
|
</sheet>
|
||||||
|
</form>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="action_maintenance_equipment_image" model="ir.actions.act_window">
|
||||||
|
<field name="name">设备图文图文</field>
|
||||||
|
<field name="res_model">maintenance.equipment.image</field>
|
||||||
|
<field name="view_mode">tree,form</field>
|
||||||
|
<field name="domain">[]</field>
|
||||||
|
</record>
|
||||||
|
<menuitem
|
||||||
|
id="maintenance_equipment_image_form"
|
||||||
|
name="设备图文展示"
|
||||||
|
parent="maintenance.menu_m_request"
|
||||||
|
action="action_maintenance_equipment_image"
|
||||||
|
groups="maintenance.group_equipment_manager,base.group_user"
|
||||||
|
sequence="2"/>
|
||||||
|
|
||||||
|
|
||||||
</odoo>
|
</odoo>
|
||||||
@@ -11,13 +11,18 @@ class ResWorkcenter(models.Model):
|
|||||||
production_line_show = fields.Char(string='生产线名称')
|
production_line_show = fields.Char(string='生产线名称')
|
||||||
machine_tool_id = fields.Many2one('sf.machine_tool', string='机床')
|
machine_tool_id = fields.Many2one('sf.machine_tool', string='机床')
|
||||||
production_line_id = fields.Many2one('sf.production.line', string='生产线')
|
production_line_id = fields.Many2one('sf.production.line', string='生产线')
|
||||||
is_process_outsourcing = fields.Boolean('工艺外协')
|
|
||||||
users_ids = fields.Many2many("res.users", 'users_workcenter')
|
|
||||||
|
|
||||||
equipment_id = fields.Many2one(
|
equipment_id = fields.Many2one(
|
||||||
'maintenance.equipment', string="设备",
|
'maintenance.equipment', string="设备",
|
||||||
check_company=True)
|
check_company=True)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
is_process_outsourcing = fields.Boolean('工艺外协')
|
||||||
|
users_ids = fields.Many2many("res.users", 'users_workcenter')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
equipment_status = fields.Selection(
|
equipment_status = fields.Selection(
|
||||||
[("正常", "正常"), ("故障", "故障"), ("不可用", "不可用")],
|
[("正常", "正常"), ("故障", "故障"), ("不可用", "不可用")],
|
||||||
string="设备状态", compute='_compute_equipment_id')
|
string="设备状态", compute='_compute_equipment_id')
|
||||||
|
|||||||
@@ -84,11 +84,11 @@ class FeedPerTooth(models.Model):
|
|||||||
cutting_speed = fields.Char('径向切宽 ae(mm)')
|
cutting_speed = fields.Char('径向切宽 ae(mm)')
|
||||||
machining_method = fields.Selection([('直铣', '直铣'), ('坡铣', '坡铣')], string='加工方式')
|
machining_method = fields.Selection([('直铣', '直铣'), ('坡铣', '坡铣')], string='加工方式')
|
||||||
materials_type_id = fields.Many2one('sf.materials.model', string='材料型号')
|
materials_type_id = fields.Many2one('sf.materials.model', string='材料型号')
|
||||||
blade_diameter = fields.Float('刃部直径D1(mm)', readonly=True, compute='_compute_product_template_id')
|
blade_diameter = fields.Float('刃部直径D1(mm)', readonly=True, related='product_template_id.cutting_tool_blade_diameter')
|
||||||
feed_per_tooth = fields.Char('每齿走刀量 (mm/z)')
|
feed_per_tooth = fields.Char('每齿走刀量 (mm/z)')
|
||||||
unit = fields.Char('单位', default='fz')
|
unit = fields.Char('单位', default='fz')
|
||||||
|
|
||||||
@api.depends('product_template_id')
|
# @api.depends('product_template_id')
|
||||||
def _compute_product_template_id(self):
|
# def _compute_product_template_id(self):
|
||||||
if self.product_template_id is not None:
|
# if self.product_template_id is not None:
|
||||||
self.blade_diameter = self.product_template_id.cutting_tool_blade_diameter
|
# self.blade_diameter = self.product_template_id.cutting_tool_blade_diameter
|
||||||
|
|||||||
@@ -105,79 +105,79 @@ class SfToolMaterialSearch(models.Model):
|
|||||||
cutting_speed_ids = fields.Many2many('sf.cutting.speed', string='切削速度Vc')
|
cutting_speed_ids = fields.Many2many('sf.cutting.speed', string='切削速度Vc')
|
||||||
feed_per_tooth_ids = fields.Many2many('sf.feed.per.tooth', 'rel_feed_per_tooth_ids', '每齿走刀量fz')
|
feed_per_tooth_ids = fields.Many2many('sf.feed.per.tooth', 'rel_feed_per_tooth_ids', '每齿走刀量fz')
|
||||||
|
|
||||||
@api.constrains('suitable_machining_method_ids')
|
# @api.constrains('suitable_machining_method_ids')
|
||||||
def _check_suitable_machining_method_ids(self):
|
# def _check_suitable_machining_method_ids(self):
|
||||||
for record in self:
|
# for record in self:
|
||||||
if len(record.suitable_machining_method_ids) == 0 and self.cutting_tool_type == '整体式刀具':
|
# if len(record.suitable_machining_method_ids) == 0 and self.cutting_tool_type == '整体式刀具':
|
||||||
raise ValidationError("适合加工方式不能为空!")
|
# raise ValidationError("适合加工方式不能为空!")
|
||||||
|
#
|
||||||
@api.constrains('blade_tip_characteristics_ids')
|
# @api.constrains('blade_tip_characteristics_ids')
|
||||||
def _check_blade_tip_characteristics_ids(self):
|
# def _check_blade_tip_characteristics_ids(self):
|
||||||
for record in self:
|
# for record in self:
|
||||||
if len(record.blade_tip_characteristics_ids) == 0 and self.cutting_tool_type == '整体式刀具':
|
# if len(record.blade_tip_characteristics_ids) == 0 and self.cutting_tool_type == '整体式刀具':
|
||||||
raise ValidationError("刀尖特征不能为空!")
|
# raise ValidationError("刀尖特征不能为空!")
|
||||||
if len(record.blade_tip_characteristics_ids) > 1 and self.cutting_tool_type == '整体式刀具':
|
# if len(record.blade_tip_characteristics_ids) > 1 and self.cutting_tool_type == '整体式刀具':
|
||||||
raise ValidationError("刀尖特征只能单选!")
|
# raise ValidationError("刀尖特征只能单选!")
|
||||||
|
#
|
||||||
@api.constrains('handle_type_ids')
|
# @api.constrains('handle_type_ids')
|
||||||
def _check_handle_type_ids(self):
|
# def _check_handle_type_ids(self):
|
||||||
for record in self:
|
# for record in self:
|
||||||
if len(record.handle_type_ids) == 0 and self.cutting_tool_type == '整体式刀具':
|
# if len(record.handle_type_ids) == 0 and self.cutting_tool_type == '整体式刀具':
|
||||||
raise ValidationError("柄部类型不能为空!")
|
# raise ValidationError("柄部类型不能为空!")
|
||||||
if len(record.handle_type_ids) > 1 and self.cutting_tool_type == '整体式刀具':
|
# if len(record.handle_type_ids) > 1 and self.cutting_tool_type == '整体式刀具':
|
||||||
raise ValidationError("柄部类型只能单选!")
|
# raise ValidationError("柄部类型只能单选!")
|
||||||
|
#
|
||||||
@api.constrains('cutting_direction_ids')
|
# @api.constrains('cutting_direction_ids')
|
||||||
def _check_cutting_direction_ids(self):
|
# def _check_cutting_direction_ids(self):
|
||||||
for record in self:
|
# for record in self:
|
||||||
if len(record.cutting_direction_ids) == 0 and self.cutting_tool_type == '整体式刀具':
|
# if len(record.cutting_direction_ids) == 0 and self.cutting_tool_type == '整体式刀具':
|
||||||
raise ValidationError("走刀方向不能为空!")
|
# raise ValidationError("走刀方向不能为空!")
|
||||||
|
#
|
||||||
@api.constrains('suitable_coolant_ids')
|
# @api.constrains('suitable_coolant_ids')
|
||||||
def _check_suitable_coolant_ids(self):
|
# def _check_suitable_coolant_ids(self):
|
||||||
for record in self:
|
# for record in self:
|
||||||
if not record.suitable_coolant_ids and self.cutting_tool_type == '整体式刀具':
|
# if not record.suitable_coolant_ids and self.cutting_tool_type == '整体式刀具':
|
||||||
raise ValidationError("适合冷却液不能为空!")
|
# raise ValidationError("适合冷却液不能为空!")
|
||||||
|
#
|
||||||
@api.constrains('integral_total_length')
|
# @api.constrains('integral_total_length')
|
||||||
def _check_integral_total_length(self):
|
# def _check_integral_total_length(self):
|
||||||
if self.integral_total_length <= 0 and self.cutting_tool_type == '整体式刀具':
|
# if self.integral_total_length <= 0 and self.cutting_tool_type == '整体式刀具':
|
||||||
raise ValidationError("总长度不能为0")
|
# raise ValidationError("总长度不能为0")
|
||||||
|
#
|
||||||
@api.constrains('integral_shank_length')
|
# @api.constrains('integral_shank_length')
|
||||||
def _check_integral_shank_length(self):
|
# def _check_integral_shank_length(self):
|
||||||
if self.integral_shank_length <= 0 and self.cutting_tool_type == '整体式刀具':
|
# if self.integral_shank_length <= 0 and self.cutting_tool_type == '整体式刀具':
|
||||||
raise ValidationError("柄部长度不能为0")
|
# raise ValidationError("柄部长度不能为0")
|
||||||
|
#
|
||||||
@api.constrains('integral_blade_length')
|
# @api.constrains('integral_blade_length')
|
||||||
def _check_integral_blade_length(self):
|
# def _check_integral_blade_length(self):
|
||||||
if self.integral_blade_length <= 0 and self.cutting_tool_type == '整体式刀具':
|
# if self.integral_blade_length <= 0 and self.cutting_tool_type == '整体式刀具':
|
||||||
raise ValidationError("刃部长度不能为0")
|
# raise ValidationError("刃部长度不能为0")
|
||||||
|
#
|
||||||
@api.constrains('integral_blade_number')
|
# @api.constrains('integral_blade_number')
|
||||||
def _check_integral_blade_number(self):
|
# def _check_integral_blade_number(self):
|
||||||
if self.integral_blade_number <= 0 and self.cutting_tool_type == '整体式刀具':
|
# if self.integral_blade_number <= 0 and self.cutting_tool_type == '整体式刀具':
|
||||||
raise ValidationError("刃数不能为0")
|
# raise ValidationError("刃数不能为0")
|
||||||
|
#
|
||||||
@api.constrains('integral_shank_diameter')
|
# @api.constrains('integral_shank_diameter')
|
||||||
def _check_integral_shank_diameter(self):
|
# def _check_integral_shank_diameter(self):
|
||||||
if self.integral_shank_diameter <= 0 and self.cutting_tool_type == '整体式刀具':
|
# if self.integral_shank_diameter <= 0 and self.cutting_tool_type == '整体式刀具':
|
||||||
raise ValidationError("柄部直径不能为0")
|
# raise ValidationError("柄部直径不能为0")
|
||||||
|
#
|
||||||
@api.constrains('integral_blade_diameter')
|
# @api.constrains('integral_blade_diameter')
|
||||||
def _check_integral_blade_diameter(self):
|
# def _check_integral_blade_diameter(self):
|
||||||
if self.integral_blade_diameter <= 0 and self.cutting_tool_type == '整体式刀具':
|
# if self.integral_blade_diameter <= 0 and self.cutting_tool_type == '整体式刀具':
|
||||||
raise ValidationError("刃部直径不能为0")
|
# raise ValidationError("刃部直径不能为0")
|
||||||
|
#
|
||||||
@api.constrains('integral_run_out_accuracy_min')
|
# @api.constrains('integral_run_out_accuracy_min')
|
||||||
def _check_integral_blade_diameter(self):
|
# def _check_integral_blade_diameter(self):
|
||||||
if self.integral_run_out_accuracy_min <= 0 and self.cutting_tool_type == '整体式刀具':
|
# if self.integral_run_out_accuracy_min <= 0 and self.cutting_tool_type == '整体式刀具':
|
||||||
raise ValidationError("端跳精度最小(min)不能为0")
|
# raise ValidationError("端跳精度最小(min)不能为0")
|
||||||
|
#
|
||||||
@api.constrains('integral_run_out_accuracy_max')
|
# @api.constrains('integral_run_out_accuracy_max')
|
||||||
def _check_integral_run_out_accuracy_max(self):
|
# def _check_integral_run_out_accuracy_max(self):
|
||||||
if self.integral_run_out_accuracy_max <= 0 and self.cutting_tool_type == '整体式刀具':
|
# if self.integral_run_out_accuracy_max <= 0 and self.cutting_tool_type == '整体式刀具':
|
||||||
raise ValidationError("端跳精度最大(max)不能为0")
|
# raise ValidationError("端跳精度最大(max)不能为0")
|
||||||
|
|
||||||
# integral_front_angle = fields.Float('整体式刀具前角(°)')
|
# integral_front_angle = fields.Float('整体式刀具前角(°)')
|
||||||
# integral_rear_angle = fields.Float('整体式刀具后角(°)')
|
# integral_rear_angle = fields.Float('整体式刀具后角(°)')
|
||||||
|
|||||||
@@ -194,13 +194,22 @@
|
|||||||
<group>
|
<group>
|
||||||
<field name="integral_code" invisible="True"/>
|
<field name="integral_code" invisible="True"/>
|
||||||
<field name="integral_total_length" string="总长度(mm)"/>
|
<field name="integral_total_length" string="总长度(mm)"/>
|
||||||
<field name="integral_shank_length" string="柄部长度(mm)"/>
|
<field name="mrs_materials_model_id" string="刀具材质" placeholder="请选择"
|
||||||
|
attrs="{'required': [('cutting_tool_type','=','整体式刀具')]}"/>
|
||||||
|
<field name="integral_hardness" string="刀具硬度(HRC)"/>
|
||||||
<field name="integral_blade_length" string="刃部长度(mm)"/>
|
<field name="integral_blade_length" string="刃部长度(mm)"/>
|
||||||
<field name="integral_neck_length" string="颈部长度(mm)"/>
|
<field name="integral_blade_diameter" string="刃部直径(mm)" class="diameter"/>
|
||||||
<field name="integral_blade_tip_taper" string="刀尖锥度(°)"/>
|
|
||||||
<field name="integral_blade_helix_angle" string="刃部螺旋角(°)"/>
|
|
||||||
<field name="integral_blade_type" string="刃部类型"/>
|
<field name="integral_blade_type" string="刃部类型"/>
|
||||||
<field name="mrs_materials_model_id" string="刀具材质" attrs="{'required': [('cutting_tool_type','=','整体式刀具')]}"/>
|
<field name="integral_blade_helix_angle" string="刃部螺旋角(°)"/>
|
||||||
|
<field name="integral_blade_number" string="刃数(个)"/>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<field name="integral_shank_length" string="柄部长度(mm)"/>
|
||||||
|
<field name="integral_shank_diameter" string="柄部直径(mm)" class="diameter"/>
|
||||||
|
<field name="integral_neck_length" string="颈部长度(mm)"/>
|
||||||
|
<field name="integral_neck_diameter" string="颈部直径(mm)" class="diameter"/>
|
||||||
|
<field name="integral_blade_tip_diameter" string="刀尖直径(mm)" class="diameter"/>
|
||||||
|
<field name="integral_blade_tip_taper" string="刀尖锥度(°)"/>
|
||||||
<label for="integral_run_out_accuracy_min" string="端跳精度:"/>
|
<label for="integral_run_out_accuracy_min" string="端跳精度:"/>
|
||||||
<div class="test_model">
|
<div class="test_model">
|
||||||
<label for="integral_run_out_accuracy_min" string="最小(min)"/>
|
<label for="integral_run_out_accuracy_min" string="最小(min)"/>
|
||||||
@@ -212,32 +221,29 @@
|
|||||||
options="{'format': false}" attrs="{'required': [('cutting_tool_type','=','整体式刀具')]}"/>
|
options="{'format': false}" attrs="{'required': [('cutting_tool_type','=','整体式刀具')]}"/>
|
||||||
<span>(mm)&nbsp;</span>
|
<span>(mm)&nbsp;</span>
|
||||||
</div>
|
</div>
|
||||||
</group>
|
<field name="integral_coarse_medium_fine" string="粗/中/精" placeholder="请选择"
|
||||||
<group>
|
attrs="{'required': [('cutting_tool_type','=','整体式刀具')]}"/>
|
||||||
<field name="integral_blade_number" string="刃数(个)"/>
|
|
||||||
<field name="integral_shank_diameter" string="柄部直径(mm)"/>
|
|
||||||
<field name="integral_blade_diameter" string="刃部直径(mm)"/>
|
|
||||||
<field name="integral_neck_diameter" string="颈部直径(mm)"/>
|
|
||||||
<field name="integral_blade_tip_diameter" string="刀尖直径(mm)"/>
|
|
||||||
<field name="integral_hardness" string="刀具硬度(HRC)"/>
|
|
||||||
<field name="integral_coarse_medium_fine" string="粗/中/精" attrs="{'required': [('cutting_tool_type','=','整体式刀具')]}"/>
|
|
||||||
<field name="integral_coating_material" string="涂层材质"/>
|
<field name="integral_coating_material" string="涂层材质"/>
|
||||||
</group>
|
</group>
|
||||||
</group>
|
</group>
|
||||||
<group string="适合加工方式">
|
<group string="适合加工方式">
|
||||||
<field name="suitable_machining_method_ids" string=""/>
|
<field name="suitable_machining_method_ids" string="" widget="custom_many2many_checkboxes"/>
|
||||||
</group>
|
</group>
|
||||||
|
<group>
|
||||||
<group string="刀尖特征">
|
<group string="刀尖特征">
|
||||||
<field name="blade_tip_characteristics_ids" string=""/>
|
<field name="blade_tip_characteristics_ids" string="" widget="custom_many2many_checkboxes"/>
|
||||||
</group>
|
</group>
|
||||||
<group string="柄部类型">
|
<group string="柄部类型">
|
||||||
<field name="handle_type_ids" string=""/>
|
<field name="handle_type_ids" string="" widget="custom_many2many_checkboxes"/>
|
||||||
</group>
|
</group>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
<group string="走刀方向">
|
<group string="走刀方向">
|
||||||
<field name="cutting_direction_ids" string=""/>
|
<field name="cutting_direction_ids" string="" widget="custom_many2many_checkboxes"/>
|
||||||
</group>
|
</group>
|
||||||
<group string="适合冷却液">
|
<group string="适合冷却液">
|
||||||
<field name="suitable_coolant_ids" string=""/>
|
<field name="suitable_coolant_ids" string="" widget="custom_many2many_checkboxes"/>
|
||||||
|
</group>
|
||||||
</group>
|
</group>
|
||||||
</page>
|
</page>
|
||||||
<page string="切削速度Vc" attrs="{'invisible': [('cutting_tool_type','!=','整体式刀具')]}">
|
<page string="切削速度Vc" attrs="{'invisible': [('cutting_tool_type','!=','整体式刀具')]}">
|
||||||
|
|||||||
Reference in New Issue
Block a user