From 23b75df2d47e16423422e807a005b8ea96a74c13 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Sat, 20 Nov 2021 22:23:27 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=8A=A8gitpull=20develop?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hb_server/apps/wpm/models.py | 2 +- hb_server/apps/wpm/serializers.py | 7 +++++++ hb_server/apps/wpm/views.py | 23 +++++++++++++++++++++-- hb_server/server/urls.py | 3 ++- hb_server/utils/view.py | 15 +++++++++++++++ 5 files changed, 46 insertions(+), 4 deletions(-) diff --git a/hb_server/apps/wpm/models.py b/hb_server/apps/wpm/models.py index b15585d..517593e 100644 --- a/hb_server/apps/wpm/models.py +++ b/hb_server/apps/wpm/models.py @@ -80,7 +80,7 @@ class OperationMaterial(BaseModel): type = models.IntegerField('类型', default=0, choices=type_choices) operation = models.ForeignKey(Operation, verbose_name='关联的生产操作', on_delete=models.CASCADE) wmaterial = models.ForeignKey(WMaterial, verbose_name='关联的车间物料', on_delete=models.CASCADE, null=True, blank=True) - material = models.ForeignKey(Material, verbose_name='可能产出的副产品', on_delete=models.CASCADE, null=True, blank=True) + material = models.ForeignKey(Material, verbose_name='可能产出的产品', on_delete=models.CASCADE, null=True, blank=True) count = models.IntegerField('消耗或产出数量', validators=[MinValueValidator(0)]) class OperationRecord(BaseModel): diff --git a/hb_server/apps/wpm/serializers.py b/hb_server/apps/wpm/serializers.py index 877ed61..cbcdf3d 100644 --- a/hb_server/apps/wpm/serializers.py +++ b/hb_server/apps/wpm/serializers.py @@ -245,6 +245,13 @@ class OperationRecordSerializer(serializers.ModelSerializer): model = OperationRecord fields = ['form', 'record_data'] + +class OperationRecordSubmitSerializer(serializers.ModelSerializer): + record_data = OperationRecordItemSerializer(many=True) + class Meta: + model = OperationRecord + fields = ['record_data'] + class OperationWproductListSerializer(serializers.ModelSerializer): material_ = MaterialSimpleSerializer(source='material', read_only=True) subproduction_plan_ = SubproductionPlanSimpleSerializer(source='subproduction_plan', read_only=True) diff --git a/hb_server/apps/wpm/views.py b/hb_server/apps/wpm/views.py index 4662484..1cb79c0 100644 --- a/hb_server/apps/wpm/views.py +++ b/hb_server/apps/wpm/views.py @@ -17,7 +17,7 @@ from apps.system.mixins import CreateUpdateModelAMixin, OptimizationMixin from rest_framework.decorators import action from apps.wpm.models import OperationEquip, OperationWproduct, WMaterial, WProduct, Operation, OperationMaterial, OperationRecord, OperationRecordItem -from apps.wpm.serializers import OperationEquipListSerializer, OperationEquipUpdateSerializer, OperationRecordListSerializer, OperationUpdateSerializer, OperationWproductListSerializer, OperationCreateSerializer, OperationDetailSerializer, OperationListSerializer, PickHalfSerializer, PickSerializer, OperationInitSerializer, OperationSubmitSerializer, WMaterialListSerializer, WProductListSerializer, WplanPutInSerializer, WpmTestRecordCreateSerializer, WproductPutInSerializer +from apps.wpm.serializers import OperationEquipListSerializer, OperationEquipUpdateSerializer, OperationRecordListSerializer, OperationRecordSubmitSerializer, OperationUpdateSerializer, OperationWproductListSerializer, OperationCreateSerializer, OperationDetailSerializer, OperationListSerializer, PickHalfSerializer, PickSerializer, OperationInitSerializer, OperationSubmitSerializer, WMaterialListSerializer, WProductListSerializer, WplanPutInSerializer, WpmTestRecordCreateSerializer, WproductPutInSerializer from rest_framework.response import Response from django.db import transaction from rest_framework import exceptions, serializers @@ -392,7 +392,26 @@ class OperationRecordViewSet(ListModelMixin, DestroyModelMixin, GenericViewSet): instance.delete() return Response() - + @action(methods=['post'], detail=True, perms_map={'post':'*'}, serializer_class=OperationRecordSubmitSerializer) + def submit(self, request, pk=None): + serializer = OperationRecordSubmitSerializer(data=request.data, context={'request':self.request}) + serializer.is_valid(raise_exception=True) + vdata = serializer.data + opr = self.get_object() + wrds = [] + for m in vdata['record_data']: # 保存记录详情 + form_field = m['form_field'] + m['field_name'] = form_field.field_name + m['field_key'] = form_field.field_key + m['field_type'] = form_field.field_type + m['field_value'] = m['field_value'] + m['sort'] = form_field.sort + m['operation_record'] = opr + wrds.append(OperationRecordItem(**m)) + OperationRecordItem.objects.bulk_create(wrds) + opr.is_filled = True + opr.save() + return Response() class DoFormInit(CreateAPIView, GenericAPIView): diff --git a/hb_server/server/urls.py b/hb_server/server/urls.py index b5ac030..3db8e36 100644 --- a/hb_server/server/urls.py +++ b/hb_server/server/urls.py @@ -26,7 +26,7 @@ from rest_framework.documentation import include_docs_urls from rest_framework_simplejwt.views import (TokenObtainPairView, TokenRefreshView) from django.views.generic import TemplateView -from utils.view import GenSignature +from utils.view import GenSignature, UpdateDevelop router = routers.DefaultRouter() router.register('', FileViewSet, basename="file") @@ -72,6 +72,7 @@ urlpatterns = [ # 工具 path('api/utils/signature/', GenSignature.as_view()), + path('api/utils/develop/', UpdateDevelop.as_view()), # 前端页面入口 path('',TemplateView.as_view(template_name="index.html")) diff --git a/hb_server/utils/view.py b/hb_server/utils/view.py index 23707ff..4c097b9 100644 --- a/hb_server/utils/view.py +++ b/hb_server/utils/view.py @@ -49,3 +49,18 @@ class GenSignature(APIView): image[i][j][0],image[i][j][1],image[i][j][2] = 0,0,0 cv2.imwrite(path,image) return Response(request.data, status=status.HTTP_200_OK) + + +class UpdateDevelop(APIView): + """ + 更新开发服务器 + """ + authentication_classes = () + permission_classes = () + + def post(self, request, *args, **kwargs): + import os + # 更新后端 + os.chdir('/home/hberp') + os.system('git pull https://caoqianming%40ctc.ac.cn:9093qqww@e.coding.net/ctcdevteam/hberp/hberp.git') + return Response()