feat: equipment的导入

This commit is contained in:
caoqianming 2023-12-20 17:02:18 +08:00
parent 0f2d2dbee9
commit 873dda9296
2 changed files with 49 additions and 0 deletions

33
apps/em/services.py Normal file
View File

@ -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)
}
)

View File

@ -6,6 +6,11 @@ from apps.em.filters import EquipFilterSet
from rest_framework.exceptions import ParseError from rest_framework.exceptions import ParseError
from rest_framework.mixins import ListModelMixin, CreateModelMixin, DestroyModelMixin from rest_framework.mixins import ListModelMixin, CreateModelMixin, DestroyModelMixin
from dateutil.relativedelta import relativedelta 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. # Create your views here.
@ -22,6 +27,17 @@ class EquipmentViewSet(CustomModelViewSet):
raise ParseError('请指定设备类型') raise ParseError('请指定设备类型')
return super().filter_queryset(queryset) 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): class EcheckRecordViewSet(ListModelMixin, CreateModelMixin, DestroyModelMixin, CustomGenericViewSet):
""" """