feat: mioitemwtest 接口
This commit is contained in:
parent
1072621301
commit
d3a35fac31
|
@ -0,0 +1,30 @@
|
|||
# Generated by Django 3.2.12 on 2024-12-31 02:51
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('qm', '0032_defect_note'),
|
||||
('inm', '0022_mioitemw'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='mioitemw',
|
||||
name='qct',
|
||||
field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to='qm.qct', verbose_name='所用检验模板'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='mioitem',
|
||||
name='is_testok',
|
||||
field=models.BooleanField(blank=True, null=True, verbose_name='检验是否合格'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='mioitemw',
|
||||
name='is_testok',
|
||||
field=models.BooleanField(blank=True, null=True, verbose_name='检验是否合格'),
|
||||
),
|
||||
]
|
|
@ -141,7 +141,7 @@ class MIOItem(BaseModel):
|
|||
count_n_jsqx = models.PositiveIntegerField('结石气线', default=0) # 废弃字段
|
||||
count_n_qt = models.PositiveIntegerField('其他', default=0)
|
||||
|
||||
is_testok = models.BooleanField('检验是否合格', default=True)
|
||||
is_testok = models.BooleanField('检验是否合格', null=True, blank=True)
|
||||
|
||||
@classmethod
|
||||
def count_fields(cls):
|
||||
|
@ -176,7 +176,8 @@ class MIOItemw(BaseModel):
|
|||
test_json = models.JSONField('检验情况', default=dict, blank=True)
|
||||
defect_json = models.JSONField('缺陷情况', default=list, blank=True)
|
||||
note = models.TextField('备注', null=True, blank=True)
|
||||
qct = models.ForeignKey('qm.qct', verbose_name='所用检验模板', on_delete=models.SET_NULL, null=True, blank=True, db_constraint=False)
|
||||
test_user = models.ForeignKey(User, verbose_name='检验人', on_delete=models.SET_NULL, null=True, blank=True)
|
||||
test_time = models.DateTimeField('检验时间', null=True, blank=True)
|
||||
is_testok = models.BooleanField('检验是否合格', default=True)
|
||||
is_testok = models.BooleanField('检验是否合格', null=True, blank=True)
|
||||
|
|
@ -98,10 +98,24 @@ class MIOItemwCreateSerializer(CustomModelSerializer):
|
|||
fields = ["number", "note"]
|
||||
|
||||
class MIOItemwSerializer(CustomModelSerializer):
|
||||
test_user_name = serializers.CharField(source='test_user.name', read_only=True)
|
||||
class Meta:
|
||||
model = MIOItemw
|
||||
fields = "__all__"
|
||||
|
||||
class MIOItemwTestSerializer(CustomModelSerializer):
|
||||
class Meta:
|
||||
model = MIOItemw
|
||||
fields = ["test_user", "defect_json", "note", "test_json", "is_testok", "test_time", "qct"]
|
||||
extra_kwargs = {
|
||||
'test_user': {'required': True},
|
||||
'defect_json': {'required': True},
|
||||
'test_json': {'required': True},
|
||||
'is_testok': {'required': True},
|
||||
'test_time': {'required': True},
|
||||
'qct': {'required': True},
|
||||
}
|
||||
|
||||
class MIOItemCreateSerializer(CustomModelSerializer):
|
||||
assemb = MIOItemACreateSerializer(
|
||||
label='组合件信息', many=True, write_only=True, required=False)
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
from django.urls import path, include
|
||||
from rest_framework.routers import DefaultRouter
|
||||
from apps.inm.views import (
|
||||
WarehouseVIewSet, MaterialBatchViewSet, MIOViewSet, MIOItemViewSet, MioDoViewSet, MioSaleViewSet, MioPurViewSet, MioOtherViewSet)
|
||||
WarehouseVIewSet, MaterialBatchViewSet, MIOViewSet,
|
||||
MIOItemViewSet, MioDoViewSet, MioSaleViewSet,
|
||||
MioPurViewSet, MioOtherViewSet, MIOItemwViewSet)
|
||||
|
||||
API_BASE_URL = 'api/inm/'
|
||||
HTML_BASE_URL = 'inm/'
|
||||
|
@ -16,6 +18,7 @@ router.register('mio/sale', MioSaleViewSet)
|
|||
router.register('mio/pur', MioPurViewSet)
|
||||
router.register('mio/other', MioOtherViewSet)
|
||||
router.register('mioitem', MIOItemViewSet, basename='mioitem')
|
||||
router.register('mioitemw', MIOItemwViewSet, basename='mioitemw')
|
||||
urlpatterns = [
|
||||
path(API_BASE_URL, include(router.urls)),
|
||||
]
|
||||
|
|
|
@ -9,10 +9,12 @@ from django.utils import timezone
|
|||
from rest_framework.response import Response
|
||||
from django.db.models import Sum
|
||||
|
||||
from apps.inm.models import WareHouse, MaterialBatch, MIO, MIOItem
|
||||
from apps.inm.models import WareHouse, MaterialBatch, MIO, MIOItem, MIOItemw
|
||||
from apps.inm.serializers import (
|
||||
MaterialBatchSerializer, WareHourseSerializer, MIOListSerializer, MIOItemSerializer, MioItemAnaSerializer,
|
||||
MIODoSerializer, MIOSaleSerializer, MIOPurSerializer, MIOOtherSerializer, MIOItemCreateSerializer, MaterialBatchDetailSerializer, MIODetailSerializer, MIOItemTestSerializer, MIOItemPurInTestSerializer)
|
||||
MIODoSerializer, MIOSaleSerializer, MIOPurSerializer, MIOOtherSerializer, MIOItemCreateSerializer,
|
||||
MaterialBatchDetailSerializer, MIODetailSerializer, MIOItemTestSerializer, MIOItemPurInTestSerializer,
|
||||
MIOItemwSerializer, MIOItemwTestSerializer)
|
||||
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
|
||||
from apps.inm.services import InmService, daoru_mb
|
||||
from apps.utils.mixins import BulkCreateModelMixin, BulkDestroyModelMixin, BulkUpdateModelMixin
|
||||
|
@ -316,3 +318,28 @@ class MIOItemViewSet(ListModelMixin, BulkCreateModelMixin, BulkDestroyModelMixin
|
|||
if res[i] is None:
|
||||
res[i] = 0
|
||||
return Response(res)
|
||||
|
||||
|
||||
class MIOItemwViewSet(CustomGenericViewSet):
|
||||
queryset = MIOItemw.objects.all()
|
||||
serializer_class = MIOItemwSerializer
|
||||
|
||||
@action(methods=['post'], detail=True, perms_map={'post': 'mioitem.test'}, serializer_class=MIOItemwTestSerializer)
|
||||
@transaction.atomic
|
||||
def test(self, request, *args, **kwargs):
|
||||
"""单个检验
|
||||
|
||||
单个检验
|
||||
"""
|
||||
ins: MIOItemw = self.get_object()
|
||||
if ins.test_time is not None:
|
||||
raise ParseError("该单件已检验")
|
||||
sr = MIOItemwTestSerializer(instance=ins, data=request.data)
|
||||
sr.is_valid(raise_exception=True)
|
||||
sr.save()
|
||||
if ins.mioitem.mio.submit_time is not None:
|
||||
# 已提交需要更新库存
|
||||
# todo
|
||||
pass
|
||||
return Response()
|
||||
|
Loading…
Reference in New Issue