From 86e9bf677678ac1450671b28d5d196b468b60ff9 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Tue, 16 Apr 2024 15:02:07 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=AE=BE=E5=A4=87=E8=BF=90=E8=A1=8C?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E6=94=B9=E5=8F=98=E8=A7=A6=E5=8F=91=E5=87=BD?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/em/services.py | 97 +++++++++++++++++++++++++++++++-------------- 1 file changed, 68 insertions(+), 29 deletions(-) diff --git a/apps/em/services.py b/apps/em/services.py index b6f8dda3..2a508811 100644 --- a/apps/em/services.py +++ b/apps/em/services.py @@ -1,33 +1,72 @@ from .models import Equipment from apps.system.models import Dept from apps.mtm.models import Mgroup +import datetime +from .models import RuningState -def daoru_equipment(path:str): - from apps.utils.snowflake import idWorker - from openpyxl import load_workbook - wb = load_workbook(path) - sheet = wb.get_sheet_by_name('em_equipment') - i = 2 - while sheet[f'a{i}'].value: - name = sheet[f'a{i}'].value - number = sheet[f'b{i}'].value - model = sheet[f'c{i}'].value - parameter = sheet[f'd{i}'].value - place = sheet[f'e{i}'].value - power_kw = sheet[f'f{i}'].value - belong_dept_name = sheet[f'g{i}'].value - mgroup_name = sheet[f'h{i}'].value - Equipment.objects.get_or_create( - number=number, - defaults={ - 'id': idWorker.get_id(), - 'name': name, - 'model': model, - 'parameter': parameter, - 'place': place, - 'power_kw': power_kw, - 'belong_dept': Dept.objects.get(name=belong_dept_name) if belong_dept_name else None, - 'mgroup': Mgroup.objects.get(name=mgroup_name) if mgroup_name else None - } - ) - i = i + 1 + +def shutdown_or_startup(equipId: str, last_timex: datetime, last_mrs): + """ + last_mrs 设备运行状态值 + """ + from apps.wpm.models import StLog + from apps.wpm.tasks import cal_exp_duration_hour + from apps.wpm.services import get_sflog + + equip = Equipment.objects.get(id=equipId) + equip.running_state = last_mrs + equip.save(update_fields=["running_state"]) + + mgroup = equip.mgroup + is_core_for_mgroup = equip.is_core_for_mgroup + if mgroup and is_core_for_mgroup: + last_stlog = StLog.objects.filter(mgroup=mgroup, is_shutdown=True).order_by("-start_time").first() # 找到最后一次停机记录 + if last_stlog: + if last_timex >= last_stlog.start_time: # 认为是有效信号 + if last_stlog.end_time is None and last_mrs == RuningState.RUNING: # 从停到开 + last_stlog.end_time = last_timex + last_stlog.duration = (last_stlog.end_time - last_stlog.start_time).total_seconds() / 3600 + last_stlog.save() + mgroup.is_runing = True + mgroup.save() + cal_exp_duration_hour(last_stlog.id) # 触发时间分配 + elif last_stlog.end_time and last_mrs != RuningState.RUNING and last_timex > last_stlog.end_time: # 从开到停 + StLog.objects.create(title="停机", is_shutdown=True, mgroup=mgroup, end_time=None, start_time=last_timex, sflog=get_sflog(mgroup, last_timex)) + mgroup.is_runing = False + mgroup.save() + else: + StLog.objects.create(title="停机", is_shutdown=True, mgroup=mgroup, end_time=None, start_time=last_timex, sflog=get_sflog(mgroup, last_timex)) + mgroup.is_runing = False + mgroup.save() + + +def daoru_equipment(path: str): + from apps.utils.snowflake import idWorker + from openpyxl import load_workbook + + wb = load_workbook(path) + sheet = wb["em_equipment"] + i = 2 + while sheet[f"a{i}"].value: + name = sheet[f"a{i}"].value + number = sheet[f"b{i}"].value + model = sheet[f"c{i}"].value + parameter = sheet[f"d{i}"].value + place = sheet[f"e{i}"].value + power_kw = sheet[f"f{i}"].value + belong_dept_name = sheet[f"g{i}"].value + mgroup_name = sheet[f"h{i}"].value + Equipment.objects.get_or_create( + number=number, + defaults={ + "id": idWorker.get_id(), + "name": name, + "model": model, + "parameter": parameter, + "place": place, + "power_kw": power_kw, + "belong_dept": Dept.objects.get(name=belong_dept_name) if belong_dept_name else None, + "mgroup": Mgroup.objects.get(name=mgroup_name) if mgroup_name else None, + }, + ) + i = i + 1