diff --git a/sf_machine_connect/models/ftp_client.py b/sf_machine_connect/models/ftp_client.py
index ec46d620..2d9ad9a5 100644
--- a/sf_machine_connect/models/ftp_client.py
+++ b/sf_machine_connect/models/ftp_client.py
@@ -245,32 +245,32 @@ class Machine_ftp(models.Model):
program_status = fields.Char('程序运行状态', readonly=True)
current_program = fields.Char('机床当前执行指令', readonly=True)
current_program_seq = fields.Char('机床当前执行语句号', readonly=True)
- x_abs_pos = fields.Char('机床X轴当前位置', readonly=True)
- y_abs_pos = fields.Char('机床Y轴当前位置', readonly=True)
- z_abs_pos = fields.Char('机床Z轴当前位置', readonly=True)
+ x_abs_pos = fields.Char('机床X轴当前位置(mm)', readonly=True)
+ y_abs_pos = fields.Char('机床Y轴当前位置(mm)', readonly=True)
+ z_abs_pos = fields.Char('机床Z轴当前位置(mm)', readonly=True)
# 机床设定进给速度, 机床实际进给速度, 机床设定主轴转速, 机床实际主轴转速, 机床主轴负载, 机床X轴伺服轴负载, 机床Y轴伺服轴负载
# 机床Z轴伺服轴负载, 机床快速移动倍率, 机床进给倍率, 机床X轴机械坐标, 机床Y轴机械坐标, 机床Z轴机械坐标, 机床X轴相对工件坐标
# 机床Y轴相对工件坐标, 机床Z轴相对工件坐标, 机床X轴目标距离, 机床Y轴目标距离, 机床Z轴目标距离
- feed_speed_set = fields.Char('机床设定进给速度', readonly=True)
- act_feed_speed = fields.Char('机床实际进给速度', readonly=True)
- spindle_speed_set = fields.Char('机床设定主轴转速', readonly=True)
- act_spindle_speed = fields.Char('机床实际主轴转速', readonly=True)
- spindle_load = fields.Char('机床主轴负载', readonly=True)
- x_axis_load = fields.Char('机床X轴伺服轴负载', readonly=True)
- y_axis_load = fields.Char('机床Y轴伺服轴负载', readonly=True)
- z_axis_load = fields.Char('机床Z轴伺服轴负载', readonly=True)
- rapid_feed = fields.Char('机床快速移动倍率', readonly=True)
- feed_rate = fields.Char('机床进给倍率', readonly=True)
- x_mach_coord = fields.Char('机床X轴机械坐标', readonly=True)
- y_mach_coord = fields.Char('机床Y轴机械坐标', readonly=True)
- z_mach_coord = fields.Char('机床Z轴机械坐标', readonly=True)
- x_rel_coord = fields.Char('机床X轴相对工件坐标', readonly=True)
- y_rel_coord = fields.Char('机床Y轴相对工件坐标', readonly=True)
- z_rel_coord = fields.Char('机床Z轴相对工件坐标', readonly=True)
- x_dis_coord = fields.Char('机床X轴目标距离', readonly=True)
- y_dis_coord = fields.Char('机床Y轴目标距离', readonly=True)
- z_dis_coord = fields.Char('机床Z轴目标距离', readonly=True)
+ feed_speed_set = fields.Char('机床设定进给速度(mm/min)', readonly=True)
+ act_feed_speed = fields.Char('机床实际进给速度(mm/min)', readonly=True)
+ spindle_speed_set = fields.Char('机床设定主轴转速(r/min)', readonly=True)
+ act_spindle_speed = fields.Char('机床实际主轴转速(r/min)', readonly=True)
+ spindle_load = fields.Char('机床主轴负载(%)', readonly=True)
+ x_axis_load = fields.Char('机床X轴伺服轴负载(%)', readonly=True)
+ y_axis_load = fields.Char('机床Y轴伺服轴负载(%)', readonly=True)
+ z_axis_load = fields.Char('机床Z轴伺服轴负载(%)', readonly=True)
+ rapid_feed = fields.Char('机床快速移动倍率(%)', readonly=True)
+ feed_rate = fields.Char('机床进给倍率(%)', readonly=True)
+ x_mach_coord = fields.Char('机床X轴机械坐标(mm)', readonly=True)
+ y_mach_coord = fields.Char('机床Y轴机械坐标(mm)', readonly=True)
+ z_mach_coord = fields.Char('机床Z轴机械坐标(mm)', readonly=True)
+ x_rel_coord = fields.Char('机床X轴相对工件坐标(mm)', readonly=True)
+ y_rel_coord = fields.Char('机床Y轴相对工件坐标(mm)', readonly=True)
+ z_rel_coord = fields.Char('机床Z轴相对工件坐标(mm)', readonly=True)
+ x_dis_coord = fields.Char('机床X轴目标距离(mm)', readonly=True)
+ y_dis_coord = fields.Char('机床Y轴目标距离(mm)', readonly=True)
+ z_dis_coord = fields.Char('机床Z轴目标距离(mm)', readonly=True)
# 故障报警时间, 故障报警信息, 故障消除时间(复原时间)
alarm_time = fields.Char('故障报警时间', readonly=True)
diff --git a/sf_maintenance/models/sf_maintenance_logs.py b/sf_maintenance/models/sf_maintenance_logs.py
index 2dc26f7e..7f80e163 100644
--- a/sf_maintenance/models/sf_maintenance_logs.py
+++ b/sf_maintenance/models/sf_maintenance_logs.py
@@ -10,21 +10,21 @@ class SfMaintenanceLogs(models.Model):
name = fields.Char(string='名称')
type = fields.Selection([('type1', '类型1'), ('type2', '类型2')], string='类型')
brand = fields.Many2one('sf.machine.brand', related='maintenance_equipment_id.brand_id', string='品牌')
- maintenance_equipment_id = fields.Many2one('maintenance.equipment', string='设备')
+ maintenance_equipment_id = fields.Many2one('maintenance.equipment', string='机台号')
maintenance_equipment_oee_id = fields.Many2one('maintenance.equipment.oee', string='设备oee')
code_location = fields.Char(string='编码位置')
fault_type = fields.Selection(
[('电气类', '电气类'), ('机械类', '机械类'), ('程序类', '程序类'), ('系统类', '系统类')], string='故障类型')
fault_code = fields.Char(string='故障代码')
- fault_alarm_info = fields.Char(string='故障报警信息')
+ fault_alarm_info = fields.Text(string='故障报警信息')
alarm_level = fields.Selection([('一级', '一级(严重)'), ('二级', '二级(中等)'), ('三级', '三级(轻微)')],
string='报警级别')
- alarm_time = fields.Datetime(string='报警时间')
+ alarm_time = fields.Datetime(string='故障报警时间')
alarm_way = fields.Selection([('文本提示报警', '文本提示报警'), ('声光报警', '声光报警'), ('图文报警', '图文报警')],
string='报警方式')
fault_process = fields.Text(string='故障处理方法')
operator = fields.Many2one('res.users', string='处理人')
- recovery_time = fields.Datetime(string='复原时间')
+ recovery_time = fields.Datetime(string='故障消除时间')
fault_duration = fields.Float(string='故障时长')
note = fields.Text(string='备注')
active = fields.Boolean('Active', default=True)
diff --git a/sf_maintenance/models/sf_maintenance_oee.py b/sf_maintenance/models/sf_maintenance_oee.py
index 6d76ffbe..6e8db042 100644
--- a/sf_maintenance/models/sf_maintenance_oee.py
+++ b/sf_maintenance/models/sf_maintenance_oee.py
@@ -7,20 +7,23 @@ class SfMaintenanceEquipmentOEE(models.Model):
_description = '设备OEE'
name = fields.Char('设备oee')
- equipment_id = fields.Many2one('maintenance.equipment', '设备',
+ equipment_id = fields.Many2one('maintenance.equipment', '机台号',
domain="[('category_id.equipment_type', '=', '机床'),('state_zc', '=', '已注册')]")
type_id = fields.Many2one('sf.machine_tool.type', '型号', related='equipment_id.type_id')
- machine_tool_picture = fields.Binary('设备图片', related='equipment_id.machine_tool_picture')
+ machine_tool_picture = fields.Binary('设备图片', related='equipment_id.machine_tool_picture')
state = fields.Selection(
[("正常", "正常"), ("故障停机", "故障停机"), ("计划维保", "计划维保"), ("空闲", "空闲"),
("封存(报废)", "封存(报废)")],
default='正常', string="机床状态", related='equipment_id.state')
- run_time = fields.Float('正常运行总时长(h)')
- equipment_time = fields.Float('总时长(h)')
- done_nums = fields.Integer('累计加工总件数')
- utilization_rate = fields.Char('开动率')
- fault_time = fields.Float('故障停机总时长(h)')
+ run_time = fields.Float('加工时长(h)')
+ equipment_time = fields.Float('开机时长(h)')
+ done_nums = fields.Integer('加工件数')
+ utilization_rate = fields.Char('可用率')
+ fault_time = fields.Float('故障时长')
fault_nums = fields.Integer('故障次数')
+ # 故障率
+ fault_rate = fields.Char('故障率')
+ # 设备故障日志
sf_maintenance_logs_ids = fields.One2many('sf.maintenance.logs', 'maintenance_equipment_oee_id', '设备故障日志',
related='equipment_id.sf_maintenance_logs_ids')
oee_logs = fields.One2many('maintenance.equipment.oee.logs', 'equipment_oee_id', string='运行日志')
@@ -38,12 +41,46 @@ class SfMaintenanceEquipmentOEELog(models.Model):
_name = 'maintenance.equipment.oee.logs'
_description = '设备运行日志'
- name = fields.Char('运行日志')
- run_time = fields.Datetime('时间')
- state = fields.Selection([("开机", "开机"), ("关机", "关机"), ("等待", "等待"), ("开始加工", "开始加工"),
- ("结束加工", "结束加工"), ("故障", "故障"),
- ("检修", "检修"), ("保养", "保养")], default="", string="事件/状态")
- workorder_id = fields.Char('加工订单')
- time = fields.Char('持续时长')
- color = fields.Char('颜色', default=1)
+ equipment_id = fields.Many2one('maintenance.equipment', '机台号')
+ name = fields.Char('设备名称')
+ machine_tool_picture = fields.Binary('设备图片')
+ type_id = fields.Many2one('sf.machine_tool.type', '品牌型号')
+ state = fields.Selection([("加工", "加工"), ("关机", "关机"), ("待机", "待机"), ("故障", "故障"),
+ ("检修", "检修"), ("保养", "保养")], default="", string="实时状态")
+ online_time = fields.Char('开机时长')
+
+ offline_time = fields.Char('关机时长')
+ offline_nums = fields.Integer('关机次数')
+ # 待机时长
+
+ idle_time = fields.Char('待机时长')
+
+ # 待机率
+ idle_rate = fields.Char('待机率')
+
+ work_time = fields.Char('加工时长')
+ work_rate = fields.Char('可用率')
+ fault_time = fields.Char('故障时长')
+ fault_rate = fields.Char('故障率')
+ fault_nums = fields.Integer('故障次数')
+
+ detail_ids = fields.One2many('maintenance.equipment.oee.log.detail', 'log_id', string='日志详情')
+
+ # maintenance_time = fields.Char('维保时长')
+ # work_nums = fields.Integer('加工件数')
equipment_oee_id = fields.Many2one('maintenance.equipment.oee', '设备OEE')
+
+
+# 设备运行日志详情
+class SfMaintenanceEquipmentOEELogDetail(models.Model):
+ _name = 'maintenance.equipment.oee.log.detail'
+ _description = '设备运行日志详情'
+
+ sequence = fields.Integer('序号')
+ time = fields.Datetime('时间')
+ state = fields.Selection([("加工", "加工"), ("关机", "关机"), ("待机", "待机"), ("故障", "故障"),
+ ("检修", "检修"), ("保养", "保养")], default="", string="事件/状态")
+ production_id = fields.Many2one('mrp.production', '加工工单')
+
+ log_id = fields.Many2one('maintenance.equipment.oee.logs', '日志')
+
diff --git a/sf_maintenance/security/ir.model.access.csv b/sf_maintenance/security/ir.model.access.csv
index abbd4878..fec317c2 100644
--- a/sf_maintenance/security/ir.model.access.csv
+++ b/sf_maintenance/security/ir.model.access.csv
@@ -67,3 +67,6 @@ access_sf_cutting_tool_type_admin_sf_group_equipment_user,sf_cutting_tool_type_a
access_sf_cutting_tool_type_group_purchase_director_sf_group_equipment_user,sf_cutting_tool_type_group_purchase_director,sf_base.model_sf_cutting_tool_type,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_cutting_tool_type_group_sale_director_sf_group_equipment_user,sf_cutting_tool_type_group_sale_director,sf_base.model_sf_cutting_tool_type,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_cutting_tool_type_group_plan_director_sf_group_equipment_user,sf_cutting_tool_type_group_plan_director,sf_base.model_sf_cutting_tool_type,sf_maintenance.sf_group_equipment_user,1,0,0,0
+
+access_maintenance_equipment_oee_logs,maintenance_equipment_oee_logs,model_maintenance_equipment_oee_logs,sf_maintenance.sf_group_equipment_manager,1,1,1,0
+access_maintenance_equipment_oee_log_detail,maintenance_equipment_oee_log_detail,model_maintenance_equipment_oee_log_detail,sf_maintenance.sf_group_equipment_manager,1,1,1,0
\ No newline at end of file
diff --git a/sf_maintenance/views/maintenance_equipment_oee_views.xml b/sf_maintenance/views/maintenance_equipment_oee_views.xml
index 091e3c47..9370fbbc 100644
--- a/sf_maintenance/views/maintenance_equipment_oee_views.xml
+++ b/sf_maintenance/views/maintenance_equipment_oee_views.xml
@@ -14,6 +14,7 @@
+
@@ -49,19 +50,19 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sf_maintenance/views/maintenance_logs_views.xml b/sf_maintenance/views/maintenance_logs_views.xml
index 087f6ffb..8c80372d 100644
--- a/sf_maintenance/views/maintenance_logs_views.xml
+++ b/sf_maintenance/views/maintenance_logs_views.xml
@@ -7,22 +7,20 @@
sf.maintenance.logs
-
-
+
-
-
-
+
+
-
+
@@ -45,25 +43,32 @@
-
-
-
+
+
-
-
-
-
-
-
-
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -100,6 +105,233 @@
+
+
+ maintenance.logs.run.tree
+ maintenance.equipment.oee.logs
+
+
+
+
+
+
+
+
+ maintenance.logs.run.form
+ maintenance.equipment.oee.logs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ maintenance.logs.run.detail.tree
+ maintenance.equipment.oee.log.detail
+
+
+
+
+
+
+
+
+
+
+
+ maintenance.logs.run.detail.form
+ maintenance.equipment.oee.log.detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 设备运行日志
+ ir.actions.act_window
+ maintenance.equipment.oee.logs
+
+ tree,form
+
+
+
+
+ 设备运行日志
+
+
+
+
+
+
+
diff --git a/sf_manufacturing/views/production_line_view.xml b/sf_manufacturing/views/production_line_view.xml
index c43885b4..18b628cd 100644
--- a/sf_manufacturing/views/production_line_view.xml
+++ b/sf_manufacturing/views/production_line_view.xml
@@ -100,7 +100,7 @@
sf.maintenance.logs
-
+