Accept Merge Request #230: (feature/计划管理-基础设置 -> develop)

Merge Request: 优化了产线设备资源设置模型

Created By: @禹翔辉
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/230?initial=true
This commit is contained in:
禹翔辉
2023-07-07 17:37:19 +08:00
4 changed files with 87 additions and 53 deletions

View File

@@ -12,6 +12,7 @@
'data': [ 'data': [
'security/group_security.xml', 'security/group_security.xml',
'security/ir.model.access.csv', 'security/ir.model.access.csv',
'views/production_line_base.py',
'views/maintenance_views.xml', 'views/maintenance_views.xml',
'views/maintenance_logs_views.xml', 'views/maintenance_logs_views.xml',
'views/equipment_maintenance_standards_views.xml', 'views/equipment_maintenance_standards_views.xml',

View File

@@ -10,7 +10,7 @@
""", """,
'category': 'sf', 'category': 'sf',
'website': 'https://www.sf.jikimo.com', 'website': 'https://www.sf.jikimo.com',
'depends': [], 'depends': ['sf_maintenance'],
'data': [ 'data': [
'security/ir.model.access.csv', 'security/ir.model.access.csv',
# 'security/ir.model.access.csv', # 'security/ir.model.access.csv',

View File

@@ -1,43 +1,55 @@
from odoo import models, fields from odoo import models, fields, api
from odoo.exceptions import UserError
class ProcedureEquipmentResourceSetting(models.Model): class ProcedureEquipmentResourceSetting(models.Model):
_name = 'sf.procedure.equipment.resource.setting' _name = 'sf.procedure.equipment.resource.setting'
_description = '产线设备资源设置' _description = '产线设备资源设置'
def _get_code(self): production_line_id = fields.Many2one('sf.production.line', string='生产线', required=True)
""" work_center_name_id = fields.Many2one('mrp.workcenter', string='工作中心名称')
自动生成编码 equipment_code = fields.Char(string='机台号(原设备编码)', readonly=True, compute='_onchange_equipment_name_id')
:return: equipment_name_id = fields.Many2one('maintenance.equipment',
""" string='设备名称',
fixture_material = self.env['sf.procedure.equipment.resource.setting'].sudo().search( readonly=True,
[('code', '!=', '')], compute='_onchange_work_center_name_id')
limit=1, brand = fields.Char(string='品牌', readonly=True, compute='_onchange_equipment_name_id')
order="id desc") model = fields.Char(string='型号', readonly=True, compute='_onchange_equipment_name_id')
if not fixture_material: # todo 传入工序数据
num = "%03d" % 1 working_procedure = fields.Char(string='工序', readonly=True)
else: production_capacity = fields.Float(string='产能', required=True, digits=(4, 1))
m = int(fixture_material.code) + 1
num = "%03d" % m
return num
code = fields.Char(string='序号', readonly=True, default=_get_code)
work_center_name = fields.Char(string='工作中心名称')
equipment_code = fields.Char(string='机台号')
# todo 绑定设备
# equipment_name = fields.Many2one('', string='设备名称')
brand = fields.Char(string='品牌')
model = fields.Char(string='型号')
working_procedure = fields.Char(string='工序')
production_capacity = fields.Char(string='产能', required=True)
working_calendar_id = fields.Many2one('sf.work.log.setting', string='工作日历') working_calendar_id = fields.Many2one('sf.work.log.setting', string='工作日历')
working_shift = fields.Char(string='班次') working_shift = fields.Char(string='班次', readonly=True, compute='_onchange_working_calendar_id')
create_time = fields.Datetime(string='新增时间', default=lambda self: fields.Datetime.now()) create_time = fields.Datetime(string='新增时间', default=lambda self: fields.Datetime.now(), readonly=True)
status = fields.Selection([('0', '正常'), ('1', '故障停机'), ('2', '计划停机')], string='设备状态', default='0') status = fields.Selection([('正常', '正常'), ('1', '故障停机'), ('2', '计划停机')],
string='设备状态',
readonly=True,
compute='_onchange_equipment_name_id')
participate_in_scheduling = fields.Boolean(string='参与排程', default=True) participate_in_scheduling = fields.Boolean(string='参与排程', default=True)
@api.onchange('production_capacity')
def _onchange_production_capacity(self):
for record in self:
if record.production_capacity < 0:
raise UserError("输入的产能值不正确,请重新输入!")
@api.depends('work_center_name_id')
def _onchange_work_center_name_id(self):
for record in self:
record.equipment_name_id = record.work_center_name_id.equipment_ids
@api.onchange('equipment_name_id')
def _onchange_equipment_name_id(self):
for record in self:
record.equipment_code = record.equipment_name_id.code,
record.brand = record.equipment_name_id.brand_id.name,
record.model = record.equipment_name_id.type_id.name,
record.status = record.equipment_name_id.state
@api.depends('working_calendar_id')
def _onchange_working_calendar_id(self):
for record in self:
record.working_shift = record.working_calendar_id.working_shift

View File

@@ -106,18 +106,19 @@
<field name="model">sf.procedure.equipment.resource.setting</field> <field name="model">sf.procedure.equipment.resource.setting</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<tree string="产线设备资源设置"> <tree string="产线设备资源设置">
<field name="code"/> <field name="work_center_name_id"/>
<field name="work_center_name"/>
<field name="equipment_code"/> <field name="equipment_code"/>
<!-- <field name="equipment_name"/>--> <field name="equipment_name_id"/>
<field name="brand"/> <field name="brand"/>
<field name="model"/> <field name="model"/>
<field name="working_procedure"/>
<field name="production_capacity"/> <field name="production_capacity"/>
<field name="working_calendar_id"/> <field name="working_calendar_id"/>
<field name="working_shift"/> <field name="working_shift"/>
<field name="create_time"/> <field name="create_time"/>
<field name="status"/> <field name="status"/>
<field name="participate_in_scheduling"/> <field name="participate_in_scheduling"/>
<field name="production_line_id" invisible="True"/>
</tree> </tree>
</field> </field>
</record> </record>
@@ -128,32 +129,40 @@
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="产线设备资源设置"> <form string="产线设备资源设置">
<sheet> <sheet>
<group> <group string="生产线">
<group> <group>
<field name="work_center_name"/> <field name="production_line_id"/>
</group>
<group>
<field name="code"/>
</group> </group>
</group> </group>
<group> <group string="工作中心信息">
<group> <group>
<field name="equipment_code"/> <field name="work_center_name_id"/>
<!-- <field name="equipment_name"/>-->
<field name="working_procedure"/>
<field name="production_capacity"/> <field name="production_capacity"/>
</group> </group>
<group> <group>
<field name="brand"/> <field name="working_procedure"/>
<field name="model"/> <field name="participate_in_scheduling"/>
<field name="working_calendar_id"/>
<field name="working_shift"/>
</group> </group>
</group> </group>
<group> <group string="设备信息">`
<field name="create_time"/> <group>
<field name="status"/> <field name="equipment_name_id"/>
<field name="participate_in_scheduling"/> <field name="brand"/>
<field name="status"/>
</group>
<group>
<field name="equipment_code" string="机台号"/>
<field name="model"/>
</group>
</group>
<group string="工作日历信息">
<group>
<field name="working_calendar_id"/>
<field name="create_time"/>
</group>
<group>
<field name="working_shift"/>
</group>
</group> </group>
</sheet> </sheet>
</form> </form>
@@ -165,8 +174,20 @@
<field name="model">sf.procedure.equipment.resource.setting</field> <field name="model">sf.procedure.equipment.resource.setting</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<search> <search>
<field name="work_center_name_id"/>
<field name="equipment_code"/>
<field name="equipment_name_id"/>
<field name="brand"/>
<field name="model"/>
<field name="working_procedure"/>
<field name="production_capacity"/>
<field name="working_calendar_id"/>
<field name="working_shift"/>
<field name="create_time"/>
<field name="status"/>
<field name="participate_in_scheduling"/>
<searchpanel> <searchpanel>
<field name="working_calendar_id" icon="fa-building" enable_counters="1"/> <field name="production_line_id" icon="fa-building" enable_counters="1"/>
</searchpanel> </searchpanel>
</search> </search>
</field> </field>