From 873dda9296260079ec13888426f669c4efc6329a Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 20 Dec 2023 17:02:18 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20equipment=E7=9A=84=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/em/services.py | 33 +++++++++++++++++++++++++++++++++ apps/em/views.py | 16 ++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 apps/em/services.py diff --git a/apps/em/services.py b/apps/em/services.py new file mode 100644 index 00000000..92705e55 --- /dev/null +++ b/apps/em/services.py @@ -0,0 +1,33 @@ +from .models import Equipment +from apps.system.models import Dept +from apps.mtm.models import Mgroup + +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), + 'mgroup': Mgroup.objects.get(name=mgroup_name) + } + ) + \ No newline at end of file diff --git a/apps/em/views.py b/apps/em/views.py index 3e301c57..d1f67dda 100644 --- a/apps/em/views.py +++ b/apps/em/views.py @@ -6,6 +6,11 @@ from apps.em.filters import EquipFilterSet from rest_framework.exceptions import ParseError from rest_framework.mixins import ListModelMixin, CreateModelMixin, DestroyModelMixin from dateutil.relativedelta import relativedelta +from rest_framework.decorators import action +from rest_framework.serializers import Serializer +from django.db import transaction +from apps.em.services import daoru_equipment +from rest_framework.response import Response # Create your views here. @@ -22,6 +27,17 @@ class EquipmentViewSet(CustomModelViewSet): raise ParseError('请指定设备类型') return super().filter_queryset(queryset) + @action(methods=['post'], detail=False, perms_map={'post': 'equipment.create'}, serializer_class=Serializer) + @transaction.atomic + def daoru(self, request, *args, **kwargs): + """导入 + + 导入 + """ + daoru_equipment(request.data.get('path', None)) + return Response() + + class EcheckRecordViewSet(ListModelMixin, CreateModelMixin, DestroyModelMixin, CustomGenericViewSet): """