74 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
| from django.shortcuts import render
 | |
| from rest_framework.mixins import ListModelMixin, UpdateModelMixin
 | |
| from rest_framework.decorators import action
 | |
| from django.db import transaction
 | |
| from rest_framework.response import Response
 | |
| from rest_framework.exceptions import ParseError
 | |
| from rest_framework.mixins import DestroyModelMixin, UpdateModelMixin, ListModelMixin
 | |
| 
 | |
| from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
 | |
| from apps.wpm.models import SfLog, StLog, SfLogExp
 | |
| from apps.wpm.serializers import SfLogSerializer, StLogSerializer, SflogExpSerializer
 | |
| from apps.wpm.filters import SfLogFilter, SfLogExpFilter
 | |
| from apps.mtm.models import Material
 | |
| 
 | |
| # Create your views here.
 | |
| class StLogViewSet(ListModelMixin, CustomGenericViewSet):
 | |
|     """
 | |
|     list:停机记录
 | |
| 
 | |
|     停机记录
 | |
|     """
 | |
|     perms_map = {'get': '*'}
 | |
|     queryset = StLog.objects.all()
 | |
|     serializer_class = StLogSerializer
 | |
|     select_related_fields = ['mgroup']
 | |
|     filterset_fields = ['mgroup']
 | |
|     ordering = ['-start_time']
 | |
| 
 | |
| 
 | |
| class SfLogViewSet(UpdateModelMixin, ListModelMixin, DestroyModelMixin, CustomGenericViewSet):
 | |
|     """
 | |
|     list:值班记录
 | |
| 
 | |
|     值班记录
 | |
|     """
 | |
|     perms_map = {'get': '*', 'put': 'sflog.update', 'delete': 'sflog.delete'}
 | |
|     queryset = SfLog.objects.all()
 | |
|     serializer_class = SfLogSerializer
 | |
|     select_related_fields = ['mgroup', 'shift', 'team', 'leader']
 | |
|     filterset_class = SfLogFilter
 | |
|     search_fields = ['note']
 | |
|     ordering = ['-start_time']
 | |
| 
 | |
|     @action(methods=['get'], detail=True, perms_map={'get': '*'})
 | |
|     def init_test(self, request, pk=None):
 | |
|         """
 | |
|         初始化检测录入
 | |
| 
 | |
|         初始化检测录入
 | |
|         """
 | |
|         from apps.qm.models import QuaStat, TestItem
 | |
|         from apps.qm.serializers import QuaStatSerializer
 | |
|         obj = self.get_object()
 | |
|         test_materials = Material.objects.filter(id__in=obj.mgroup.test_materials).order_by('sort', '-create_time')
 | |
|         for material in test_materials:
 | |
|             testitems = TestItem.objects.filter(id__in=material.testitems).order_by('sort', '-create_time')
 | |
|             for testitem in testitems:
 | |
|                 params = {'material': material, 'testitem': testitem, 'sflog': obj}
 | |
|                 QuaStat.objects.get_or_create(**params, defaults={**params, **{'create_by': request.user, 'belong_dept': obj.mgroup.belong_dept}})
 | |
|         qs = QuaStat.objects.filter(sflog=obj).order_by('material__sort', 'material__create_time', 'testitem__sort', 'testitem__create_time')
 | |
|         sr = QuaStatSerializer(instance=qs, many=True)
 | |
|         return Response(sr.data)
 | |
|     
 | |
| 
 | |
| class SfLogExpViewSet(CustomModelViewSet):
 | |
|     """
 | |
|     list:生产异常动态
 | |
| 
 | |
|     生产异常动态
 | |
|     """
 | |
|     queryset = SfLogExp.objects.all()
 | |
|     serializer_class = SflogExpSerializer
 | |
|     select_related_fields = ['sflog', 'sflog__mgroup', 'stlog']
 | |
|     filterset_class = SfLogExpFilter |