193 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			193 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			Python
		
	
	
	
| from django.db import transaction
 | |
| from django.shortcuts import render
 | |
| from rest_framework.decorators import permission_classes
 | |
| from rest_framework.views import APIView
 | |
| from rest_framework.permissions import IsAdminUser, AllowAny
 | |
| from rest_framework.response import Response
 | |
| from apps.develop.tasks import backup_database, backup_media, reload_server_git, reload_server_only, reload_server
 | |
| from apps.inm.models import FIFO, FIFOItem, Inventory, MaterialBatch
 | |
| from apps.mtm.models import Material
 | |
| from apps.pm.models import ProductionPlan, SubProductionPlan
 | |
| from apps.sam.models import Order
 | |
| from apps.wf.models import Ticket
 | |
| from apps.wpm.models import Operation, OperationMaterial, WProduct, WproductFlow
 | |
| from apps.wpm.services import WpmService
 | |
| from apps.em.tasks import update_equip_state_by_next_check_date
 | |
| from rest_framework.exceptions import APIException
 | |
| # Create your views here.
 | |
| 
 | |
| class CleanDataView(APIView):
 | |
|     permission_classes = [IsAdminUser]
 | |
| 
 | |
|     def post(self, request, format=None):
 | |
|         """
 | |
|         清空数据库
 | |
|         """
 | |
|         Order.objects.all().delete(soft=False)
 | |
|         ProductionPlan.objects.all().delete(soft=False)
 | |
|         FIFO.objects.all().delete()
 | |
|         Material.objects.filter(type__in=[Material.MA_TYPE_GOOD, Material.MA_TYPE_HALFGOOD]).update(count=0)
 | |
|         MaterialBatch.objects.filter(material__type__in=[Material.MA_TYPE_GOOD, Material.MA_TYPE_HALFGOOD]).delete()
 | |
|         Inventory.objects.filter(material__type__in=[Material.MA_TYPE_GOOD, Material.MA_TYPE_HALFGOOD]).delete()
 | |
|         Ticket.objects.all().delete(soft=False)
 | |
|         Operation.objects.all().delete()
 | |
|         from apps.pum.models import PuOrder
 | |
|         PuOrder.objects.all().delete(soft=False)
 | |
|         return Response()
 | |
| 
 | |
| 
 | |
| class UpdateCuttingView(APIView):
 | |
|     permission_classes = [IsAdminUser]
 | |
|     @transaction.atomic
 | |
|     def post(self, request, format=None):
 | |
|         """
 | |
|         更新下料清单
 | |
|         """
 | |
|         for i in WProduct.objects.all():
 | |
|             sp = WproductFlow.objects.filter(wproduct=i).order_by('id').first().subproduction_plan
 | |
|             op_q = OperationMaterial.objects.filter(subproduction_plan=sp, operation__step__id=1, operation__is_submited=True)
 | |
|             op = op_q.first().operation
 | |
|             i.coperation = op
 | |
|             i.save()
 | |
|             WproductFlow.objects.filter(wproduct=i).update(coperation=op)
 | |
|             WpmService.update_cutting_list_with_operation(op)
 | |
|         return Response()
 | |
| 
 | |
| from apps.qm.models import TestRecord
 | |
| class UpdateLastTestResult(APIView):
 | |
|     permission_classes = [IsAdminUser]
 | |
|     @transaction.atomic
 | |
|     def post(self, request, format=None):
 | |
|         """
 | |
|         更新最后一次检验结果
 | |
|         """
 | |
|         for i in WProduct.objects.all():
 | |
|             tr = TestRecord.objects.filter(wproduct=i, is_submited=True).order_by('-id').first()
 | |
|             if tr:
 | |
|                 i.last_test_result = tr.is_testok
 | |
|                 i.save()
 | |
|         return Response()
 | |
| 
 | |
| class UpdateFIFOItem(APIView):
 | |
| 
 | |
|     permission_classes = [IsAdminUser]
 | |
|     @transaction.atomic
 | |
|     def post(self, request, format=None):
 | |
|         """
 | |
|         更新出入库结果
 | |
|         """
 | |
|         for i in FIFOItem.objects.all():
 | |
|             if i.fifo.type == FIFO.FIFO_TYPE_PUR_IN:
 | |
|                 if i.is_testok:
 | |
|                     i.need_test = True
 | |
|                     i.save()
 | |
|             else:
 | |
|                 i.is_testok = None
 | |
|                 i.save()
 | |
|         return Response()
 | |
| 
 | |
| class UpdateSpg(APIView):
 | |
|     permission_classes = [IsAdminUser]
 | |
|     @transaction.atomic
 | |
|     def post(self, request, format=None):
 | |
|         """
 | |
|         冷加工重新计算合格率
 | |
|         """
 | |
|         for i in SubProductionPlan.objects.filter(subproduction__process__id=1):
 | |
|             WpmService.update_subproduction_progress_main(sp=i)
 | |
|         return Response()
 | |
| 
 | |
| 
 | |
| class UpdateEquipState(APIView):
 | |
|     permission_classes = [IsAdminUser]
 | |
| 
 | |
|     def post(self, request, format=None):
 | |
|         update_equip_state_by_next_check_date()
 | |
|         return Response()
 | |
| 
 | |
| class UpdateNeedToOrder(APIView):
 | |
|     permission_classes = [IsAdminUser]
 | |
|     def post(self, request):
 | |
|         WProduct.objects.exclude(to_order=None).update(need_to_order=True)
 | |
|         return Response()
 | |
| 
 | |
| class UpdateFIFONumber(APIView):
 | |
|     permission_classes = [IsAdminUser]
 | |
|     def post(self, request):
 | |
|         from utils.tools import ranstr
 | |
|         for i in FIFO.objects.all():
 | |
|             if i.type in [FIFO.FIFO_TYPE_DO_IN, FIFO.FIFO_TYPE_PUR_IN]:
 | |
|                 i.number = 'RK'+ ranstr(7)
 | |
|             else:
 | |
|                 i.number = 'CK' + ranstr(7)
 | |
|             i.save()
 | |
|         return Response()
 | |
| 
 | |
| class CorrectWproduct(APIView):
 | |
|     permission_classes = [IsAdminUser]
 | |
|     def post(self, request):
 | |
|         """
 | |
|         """
 | |
|         # WProduct.objects.filter(is_hidden=True).update(act_state=WProduct.WPR_ACT_STATE_USED)
 | |
| 
 | |
| 
 | |
| class ReloadServerGit(APIView):
 | |
|     authentication_classes = []
 | |
|     permission_classes = []
 | |
|     def post(self, request):
 | |
|         """
 | |
|         拉取代码并重启服务
 | |
|         """
 | |
|         completed = reload_server_git()
 | |
|         if completed.returncode == 0:
 | |
|             return Response()
 | |
|         else:
 | |
|             raise APIException(completed.stdout)
 | |
| 
 | |
| class ReloadServerOnly(APIView):
 | |
|     permission_classes = [IsAdminUser]
 | |
|     def post(self, request):
 | |
|         """
 | |
|         仅重启服务
 | |
|         """
 | |
|         completed = reload_server_only()
 | |
|         if completed.returncode == 0:
 | |
|             return Response()
 | |
|         else:
 | |
|             raise APIException(completed.stdout)
 | |
| 
 | |
| class ReloadServer(APIView):
 | |
|     permission_classes = [IsAdminUser]
 | |
|     def post(self, request):
 | |
|         """
 | |
|         同步数据库并重启服务
 | |
|         """
 | |
|         completed = reload_server()
 | |
|         if completed.returncode == 0:
 | |
|             return Response()
 | |
|         else:
 | |
|             raise APIException(completed.stdout)
 | |
| 
 | |
| class BackupDatabase(APIView):
 | |
|     permission_classes = [IsAdminUser]
 | |
|     def post(self, request):
 | |
|         """
 | |
|         备份数据库到指定位置
 | |
|         """
 | |
|         completed = backup_database()
 | |
|         if completed.returncode == 0:
 | |
|             return Response()
 | |
|         else:
 | |
|             raise APIException(completed.stdout)
 | |
| 
 | |
| class BackupMedia(APIView):
 | |
|     permission_classes = [IsAdminUser]
 | |
|     def post(self, request):
 | |
|         """
 | |
|         备份资源到指定位置
 | |
|         """
 | |
|         completed = backup_media()
 | |
|         if completed.returncode == 0:
 | |
|             return Response()
 | |
|         else:
 | |
|             raise APIException(completed.stdout) |