From bd2748659acfaf18c3236c023ae431db43b117df Mon Sep 17 00:00:00 2001 From: mgw <1392924357@qq.com> Date: Wed, 25 Sep 2024 17:57:24 +0800 Subject: [PATCH 01/20] =?UTF-8?q?=E5=8E=BB=E6=8E=89=E5=85=B3=E6=9C=BA?= =?UTF-8?q?=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_machine_connect/controllers/controllers.py | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/sf_machine_connect/controllers/controllers.py b/sf_machine_connect/controllers/controllers.py index 1f65c884..98c8c37e 100644 --- a/sf_machine_connect/controllers/controllers.py +++ b/sf_machine_connect/controllers/controllers.py @@ -162,7 +162,7 @@ class Sf_Dashboard_Connect(http.Controller): # 关机时长:初次上线时间 - 通电时间 'power_off_time': power_off_time, # 关机率:关机时长/初次上线时间 - 'power_off_rate': power_off_rate, + # 'power_off_rate': power_off_rate, 'first_online_duration': first_online_duration, # 停机时间:关机时间 - 运行时间 # 停机时长:关机时间 - 初次上线时间 @@ -187,11 +187,11 @@ class Sf_Dashboard_Connect(http.Controller): """ res = {'status': 1, 'message': '成功', 'data': {}} logging.info('前端请求日志数据的参数为:%s' % kw) + # 连接数据库 + conn = psycopg2.connect(**db_config) + cur = conn.cursor() try: - # 连接数据库 - conn = psycopg2.connect(**db_config) - cur = conn.cursor() machine_list = ast.literal_eval(kw['machine_list']) begin_time_str = kw['begin_time'].strip('"') end_time_str = kw['end_time'].strip('"') @@ -231,6 +231,12 @@ class Sf_Dashboard_Connect(http.Controller): res['message'] = '前端请求日志数据失败,原因:%s' % e return json.dumps(res) + finally: + if cur: + cur.close() + if conn: + conn.close() + @http.route('/api/logs/page_data', type='http', auth='public', methods=['GET', 'POST'], csrf=False, cors="*") def logs_page_data(self, **kw): @@ -242,11 +248,10 @@ class Sf_Dashboard_Connect(http.Controller): res = {'status': 1, 'message': '成功', 'data': {}} logging.info('前端请求日志数据的参数为:%s' % kw) + # 连接数据库 + conn = psycopg2.connect(**db_config) + cur = conn.cursor() try: - # 连接数据库 - conn = psycopg2.connect(**db_config) - cur = conn.cursor() - # 获取并解析传递的参数 machine_list = ast.literal_eval(kw.get('machine_list', '[]')) begin_time_str = kw.get('begin_time', '').strip('"') From 1d4188df7eeadfc158e3695a6391c4e7bcce7c05 Mon Sep 17 00:00:00 2001 From: mgw <1392924357@qq.com> Date: Thu, 26 Sep 2024 11:11:46 +0800 Subject: [PATCH 02/20] =?UTF-8?q?=E5=A2=9E=E5=8A=A024h=E7=9A=84=E6=95=85?= =?UTF-8?q?=E9=9A=9C=E6=97=B6=E9=97=B4=E8=BF=94=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_machine_connect/controllers/controllers.py | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/sf_machine_connect/controllers/controllers.py b/sf_machine_connect/controllers/controllers.py index 98c8c37e..d8ed85c9 100644 --- a/sf_machine_connect/controllers/controllers.py +++ b/sf_machine_connect/controllers/controllers.py @@ -853,10 +853,10 @@ class Sf_Dashboard_Connect(http.Controller): ''' sql2 = ''' - SELECT DISTINCT ON (alarm_time) alarm_time, alarm_repair_time + SELECT DISTINCT ON (alarm_start_time) alarm_time, alarm_start_time FROM device_data - WHERE device_name = %s AND alarm_time IS NOT NULL - ORDER BY alarm_time, time; + WHERE device_name = %s AND alarm_start_time IS NOT NULL + ORDER BY alarm_start_time, time; ''' # 执行SQL命令 @@ -872,7 +872,7 @@ class Sf_Dashboard_Connect(http.Controller): res['data'][item] = {'idle_count': row[0]} alarm_count = [] for row in result2: - alarm_count.append(row[0]) + alarm_count.append(row[1]) total_alarm_time += abs(float(row[0])) if len(list(set(alarm_count))) == 1: if list(set(alarm_count))[0] is None: @@ -1238,6 +1238,8 @@ class Sf_Dashboard_Connect(http.Controller): machine_list = ast.literal_eval(kw['machine_list']) time_threshold = datetime.now() - timedelta(days=1) + alarm_last_24_time = 0.0 + def fetch_result_as_dict(cursor): """辅助函数:将查询结果转为字典""" columns = [desc[0] for desc in cursor.description] @@ -1262,13 +1264,25 @@ class Sf_Dashboard_Connect(http.Controller): LIMIT 1; """, (item, time_threshold)) last_24_time = fetch_result_as_dict(cur) + + with conn.cursor() as cur: + cur.execute(""" + SELECT DISTINCT ON (alarm_start_time) alarm_time, alarm_start_time + FROM device_data + WHERE device_name = %s + AND alarm_start_time IS NOT NULL AND time >= %s; + """, (item, time_threshold)) + results = cur.fetchall() + for result in results: + alarm_last_24_time += float(result[0]) # 返回数据 res['data'][item] = { 'wait_time': last_all_time['run_time'] if last_all_time['run_time'] is not None else 0, 'cut_time': last_all_time['process_time'] if last_all_time['process_time'] is not None else 0, 'cut_24_time': last_24_time['process_time'] if last_24_time['process_time'] is not None else 0, 'power_on_time': last_all_time['power_on_time'] if last_all_time['power_on_time'] is not None else 0, - 'power_on_24_time': last_24_time['power_on_time'] if last_24_time['power_on_time'] is not None else 0 + 'power_on_24_time': last_24_time['power_on_time'] if last_24_time['power_on_time'] is not None else 0, + 'alarm_last_24_time': alarm_last_24_time } conn.close() From 03405637497b926a9b6040e158f4797b56d91652 Mon Sep 17 00:00:00 2001 From: mgw <1392924357@qq.com> Date: Thu, 26 Sep 2024 14:04:35 +0800 Subject: [PATCH 03/20] =?UTF-8?q?=E7=AD=9B=E9=80=89=E5=8A=A0=E5=B7=A5?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E4=B8=8D=E4=B8=BA=E7=A9=BA=E7=9A=8424h?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_machine_connect/controllers/controllers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sf_machine_connect/controllers/controllers.py b/sf_machine_connect/controllers/controllers.py index d8ed85c9..b427aa5c 100644 --- a/sf_machine_connect/controllers/controllers.py +++ b/sf_machine_connect/controllers/controllers.py @@ -1250,7 +1250,7 @@ class Sf_Dashboard_Connect(http.Controller): cur.execute(""" SELECT * FROM device_data WHERE device_name = %s - AND device_state != '离线' + AND device_state != '离线' AND process_time IS NOT NULL ORDER BY time DESC LIMIT 1; """, (item,)) From 79ec3f2c91fb5ab79aa8d763e6c86b2a5555d50b Mon Sep 17 00:00:00 2001 From: liaodanlong Date: Fri, 27 Sep 2024 09:09:48 +0800 Subject: [PATCH 04/20] =?UTF-8?q?r=E8=A7=92=E9=BB=98=E8=AE=A4=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_base/models/tool_base_new.py | 2 +- sf_base/models/tool_other_features.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sf_base/models/tool_base_new.py b/sf_base/models/tool_base_new.py index 98eea36c..3517766d 100644 --- a/sf_base/models/tool_base_new.py +++ b/sf_base/models/tool_base_new.py @@ -321,7 +321,7 @@ class ToolInventory(models.Model): prefix = fields.Char('前缀') postfix = fields.Char('后缀') diameter = fields.Float('直径(mm)') - angle = fields.Float('R角(mm)') + angle = fields.Float('R角(mm)',default=0) tool_length = fields.Float('刀具总长(mm)') blade_length = fields.Float('避空长/刃长(mm)') knife_head_name = fields.Char('刀头名称') diff --git a/sf_base/models/tool_other_features.py b/sf_base/models/tool_other_features.py index bc8f369e..3876f39a 100644 --- a/sf_base/models/tool_other_features.py +++ b/sf_base/models/tool_other_features.py @@ -23,7 +23,7 @@ class ToolMaterialsBasicParameters(models.Model): handle_length = fields.Float('柄部长度(mm)') blade_tip_diameter = fields.Float('刀尖直径(mm)') blade_tip_working_size = fields.Char('刀尖倒角度(°)', size=20) - tip_r_size = fields.Float('刀尖R角(mm)') + tip_r_size = fields.Float('刀尖R角(mm)',default=0) blade_tip_taper = fields.Integer('刀尖锥度(°)') blade_diameter = fields.Float('刃部直径(mm)') blade_length = fields.Float('刃部长度(mm)') From d84758232e79ed858deb90d37d1123732189df01 Mon Sep 17 00:00:00 2001 From: mgw <1392924357@qq.com> Date: Fri, 27 Sep 2024 09:20:19 +0800 Subject: [PATCH 05/20] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=80=BC=E4=B8=BA?= =?UTF-8?q?=E7=A9=BA=E6=97=B6=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_machine_connect/controllers/controllers.py | 22 +++++++++++++++---- .../views/maintenance_equipment_oee_views.xml | 6 ++--- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/sf_machine_connect/controllers/controllers.py b/sf_machine_connect/controllers/controllers.py index b427aa5c..f38f473b 100644 --- a/sf_machine_connect/controllers/controllers.py +++ b/sf_machine_connect/controllers/controllers.py @@ -873,7 +873,10 @@ class Sf_Dashboard_Connect(http.Controller): alarm_count = [] for row in result2: alarm_count.append(row[1]) - total_alarm_time += abs(float(row[0])) + if row[0]: + total_alarm_time += abs(float(row[0])) + else: + total_alarm_time += 0.0 if len(list(set(alarm_count))) == 1: if list(set(alarm_count))[0] is None: alarm_count_num = 0 @@ -1245,7 +1248,12 @@ class Sf_Dashboard_Connect(http.Controller): columns = [desc[0] for desc in cursor.description] return dict(zip(columns, cursor.fetchone())) if cursor.rowcount != 0 else None + # 获取当前时间的时间戳 + current_timestamp = datetime.now().timestamp() for item in machine_list: + euipment_obj = request.env['maintenance.equipment'].sudo().search([('code', '=', item)]) + # 机床上线时间段 + first_online_duration = current_timestamp - euipment_obj.first_online_time.timestamp() with conn.cursor() as cur: cur.execute(""" SELECT * FROM device_data @@ -1259,7 +1267,7 @@ class Sf_Dashboard_Connect(http.Controller): cur.execute(""" SELECT * FROM device_data WHERE device_name = %s - AND device_state != '离线' AND time >= %s + AND device_state != '离线' AND time >= %s AND process_time IS NOT NULL ORDER BY time ASC LIMIT 1; """, (item, time_threshold)) @@ -1274,7 +1282,12 @@ class Sf_Dashboard_Connect(http.Controller): """, (item, time_threshold)) results = cur.fetchall() for result in results: - alarm_last_24_time += float(result[0]) + if result[0]: + if float(result[0]) >= 1000: + continue + alarm_last_24_time += float(result[0]) + else: + alarm_last_24_time += 0.0 # 返回数据 res['data'][item] = { 'wait_time': last_all_time['run_time'] if last_all_time['run_time'] is not None else 0, @@ -1282,7 +1295,8 @@ class Sf_Dashboard_Connect(http.Controller): 'cut_24_time': last_24_time['process_time'] if last_24_time['process_time'] is not None else 0, 'power_on_time': last_all_time['power_on_time'] if last_all_time['power_on_time'] is not None else 0, 'power_on_24_time': last_24_time['power_on_time'] if last_24_time['power_on_time'] is not None else 0, - 'alarm_last_24_time': alarm_last_24_time + 'alarm_last_24_time': alarm_last_24_time, + 'first_online_time': first_online_duration, } conn.close() diff --git a/sf_maintenance/views/maintenance_equipment_oee_views.xml b/sf_maintenance/views/maintenance_equipment_oee_views.xml index b798b0ab..22423be7 100644 --- a/sf_maintenance/views/maintenance_equipment_oee_views.xml +++ b/sf_maintenance/views/maintenance_equipment_oee_views.xml @@ -95,9 +95,9 @@