feat: equipment的导入
This commit is contained in:
parent
0f2d2dbee9
commit
873dda9296
|
@ -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)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
|
@ -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):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue