修改表名
This commit is contained in:
parent
950418a154
commit
5357a2d82a
|
@ -0,0 +1,19 @@
|
||||||
|
# Generated by Django 3.2.6 on 2021-11-08 01:51
|
||||||
|
|
||||||
|
from django.db import migrations
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('mtm', '0028_auto_20211102_1707'),
|
||||||
|
('qm', '0003_testrecord'),
|
||||||
|
('inm', '0010_auto_20211102_1631'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RenameModel(
|
||||||
|
old_name='FIFODetail',
|
||||||
|
new_name='FIFOItem',
|
||||||
|
),
|
||||||
|
]
|
|
@ -68,9 +68,9 @@ class FIFO(CommonAModel):
|
||||||
remark = models.CharField('备注', max_length=1000, default='')
|
remark = models.CharField('备注', max_length=1000, default='')
|
||||||
|
|
||||||
|
|
||||||
class FIFODetail(BaseModel):
|
class FIFOItem(BaseModel):
|
||||||
"""
|
"""
|
||||||
出入库详细记录
|
出入库详细条目
|
||||||
"""
|
"""
|
||||||
is_tested = models.BooleanField('是否已检测', default=False)
|
is_tested = models.BooleanField('是否已检测', default=False)
|
||||||
is_testok = models.BooleanField('是否检测合格', default=False)
|
is_testok = models.BooleanField('是否检测合格', default=False)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
|
||||||
from apps.inm.models import FIFO, FIFODetail, IProduct, MaterialBatch, WareHouse,Inventory
|
from apps.inm.models import FIFO, FIFOItem, IProduct, MaterialBatch, WareHouse,Inventory
|
||||||
|
|
||||||
from apps.system.serializers import UserSimpleSerializer
|
from apps.system.serializers import UserSimpleSerializer
|
||||||
from apps.mtm.serializers import MaterialSimpleSerializer
|
from apps.mtm.serializers import MaterialSimpleSerializer
|
||||||
|
@ -42,10 +42,10 @@ class FIFOListSerializer(serializers.ModelSerializer):
|
||||||
model=FIFO
|
model=FIFO
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
|
|
||||||
class FIFODetailSerializer(serializers.ModelSerializer):
|
class FIFOItemSerializer(serializers.ModelSerializer):
|
||||||
material_= MaterialSimpleSerializer(source='material', read_only=True)
|
material_= MaterialSimpleSerializer(source='material', read_only=True)
|
||||||
class Meta:
|
class Meta:
|
||||||
model=FIFODetail
|
model= FIFOItem
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
|
|
||||||
class IProductInPurSerializer(serializers.ModelSerializer):
|
class IProductInPurSerializer(serializers.ModelSerializer):
|
||||||
|
@ -56,7 +56,7 @@ class IProductInPurSerializer(serializers.ModelSerializer):
|
||||||
class FIFODetailInPurSerializer(serializers.ModelSerializer):
|
class FIFODetailInPurSerializer(serializers.ModelSerializer):
|
||||||
details = IProductInPurSerializer(many=True, required=False)
|
details = IProductInPurSerializer(many=True, required=False)
|
||||||
class Meta:
|
class Meta:
|
||||||
model = FIFODetail
|
model = FIFOItem
|
||||||
fields = ['material', 'count', 'batch', 'details']
|
fields = ['material', 'count', 'batch', 'details']
|
||||||
|
|
||||||
class MaterialBatchQuerySerializer(serializers.Serializer):
|
class MaterialBatchQuerySerializer(serializers.Serializer):
|
||||||
|
@ -101,7 +101,7 @@ class FIFOInPurSerializer(serializers.ModelSerializer):
|
||||||
raise serializers.ValidationError('数目对不上')
|
raise serializers.ValidationError('数目对不上')
|
||||||
else:
|
else:
|
||||||
i['fifo'] = obj
|
i['fifo'] = obj
|
||||||
fifod = FIFODetail.objects.create(**i)
|
fifod = FIFOItem.objects.create(**i)
|
||||||
p_list = []
|
p_list = []
|
||||||
for x in p_details:
|
for x in p_details:
|
||||||
x['state'] = 1
|
x['state'] = 1
|
||||||
|
@ -113,6 +113,6 @@ class FIFOInPurSerializer(serializers.ModelSerializer):
|
||||||
IProduct.objects.bulk_create(p_list)
|
IProduct.objects.bulk_create(p_list)
|
||||||
else:
|
else:
|
||||||
i['fifo'] = obj
|
i['fifo'] = obj
|
||||||
FIFODetail.objects.create(**i)
|
FIFOItem.objects.create(**i)
|
||||||
return obj
|
return obj
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
from django.db.models.signals import post_save
|
from django.db.models.signals import post_save
|
||||||
from django.dispatch import receiver
|
from django.dispatch import receiver
|
||||||
|
|
||||||
from apps.inm.models import Inventory, MaterialBatch, FIFO, FIFODetail
|
from apps.inm.models import Inventory, MaterialBatch, FIFO, FIFOItem
|
||||||
|
|
||||||
|
|
||||||
def update_inm(instance:FIFO, type:int=1):
|
def update_inm(instance:FIFO, type:int=1):
|
||||||
|
@ -11,7 +11,7 @@ def update_inm(instance:FIFO, type:int=1):
|
||||||
warehouse = instance.warehouse
|
warehouse = instance.warehouse
|
||||||
if instance.type in [3]: # 采购入库
|
if instance.type in [3]: # 采购入库
|
||||||
# 更新相关表
|
# 更新相关表
|
||||||
for i in FIFODetail.objects.filter(fifo=instance):
|
for i in FIFOItem.objects.filter(fifo=instance):
|
||||||
material = i.material
|
material = i.material
|
||||||
o1, _ = Inventory.objects.get_or_create(material=material, warehouse=warehouse, \
|
o1, _ = Inventory.objects.get_or_create(material=material, warehouse=warehouse, \
|
||||||
defaults={'material':material, 'warehouse':warehouse, 'count':0})
|
defaults={'material':material, 'warehouse':warehouse, 'count':0})
|
||||||
|
@ -25,7 +25,7 @@ def update_inm(instance:FIFO, type:int=1):
|
||||||
material.save()
|
material.save()
|
||||||
elif instance.type in [1]: # 生产领料
|
elif instance.type in [1]: # 生产领料
|
||||||
# 更新相关表
|
# 更新相关表
|
||||||
for i in FIFODetail.objects.filter(fifo=instance):
|
for i in FIFOItem.objects.filter(fifo=instance):
|
||||||
material = i.material
|
material = i.material
|
||||||
o1 = Inventory.objects.get(material=material, warehouse=warehouse)
|
o1 = Inventory.objects.get(material=material, warehouse=warehouse)
|
||||||
o1.count = o1.count - i.count
|
o1.count = o1.count - i.count
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
from django.db.models import base
|
from django.db.models import base
|
||||||
from rest_framework import urlpatterns
|
from rest_framework import urlpatterns
|
||||||
from apps.inm.views import FIFODetailViewSet, FIFOViewSet, MaterialBatchViewSet, WarehouseViewSet,InventoryViewSet
|
from apps.inm.views import FIFOItemViewSet, FIFOViewSet, MaterialBatchViewSet, WarehouseViewSet,InventoryViewSet
|
||||||
from django.urls import path, include
|
from django.urls import path, include
|
||||||
from rest_framework.routers import DefaultRouter
|
from rest_framework.routers import DefaultRouter
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ router.register('warehouse', WarehouseViewSet, basename='warehouse')
|
||||||
router.register('inventory', InventoryViewSet, basename='inventory')
|
router.register('inventory', InventoryViewSet, basename='inventory')
|
||||||
router.register('materialbatch', MaterialBatchViewSet, basename='materialbatch')
|
router.register('materialbatch', MaterialBatchViewSet, basename='materialbatch')
|
||||||
router.register('fifo', FIFOViewSet, basename='fifo'),
|
router.register('fifo', FIFOViewSet, basename='fifo'),
|
||||||
router.register('fifodetail', FIFODetailViewSet, basename='fifodetail')
|
router.register('fifodetail', FIFOItemViewSet, basename='fifodetail')
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('', include(router.urls)),
|
path('', include(router.urls)),
|
||||||
]
|
]
|
||||||
|
|
|
@ -5,8 +5,8 @@ from rest_framework.mixins import DestroyModelMixin, ListModelMixin, RetrieveMod
|
||||||
from rest_framework.viewsets import GenericViewSet, ModelViewSet
|
from rest_framework.viewsets import GenericViewSet, ModelViewSet
|
||||||
from apps.inm.filters import MbFilterSet
|
from apps.inm.filters import MbFilterSet
|
||||||
|
|
||||||
from apps.inm.models import FIFO, FIFODetail, MaterialBatch, WareHouse,Inventory
|
from apps.inm.models import FIFO, FIFOItem, MaterialBatch, WareHouse,Inventory
|
||||||
from apps.inm.serializers import FIFODetailSerializer, FIFOInPurSerializer, FIFOListSerializer, MaterialBatchQuerySerializer, MaterialBatchSerializer, WareHouseSerializer, WareHouseCreateUpdateSerializer,InventorySerializer
|
from apps.inm.serializers import FIFOItemSerializer, FIFOInPurSerializer, FIFOListSerializer, MaterialBatchQuerySerializer, MaterialBatchSerializer, WareHouseSerializer, WareHouseCreateUpdateSerializer,InventorySerializer
|
||||||
from apps.inm.signals import update_inm
|
from apps.inm.signals import update_inm
|
||||||
from apps.system.mixins import CreateUpdateModelAMixin, OptimizationMixin
|
from apps.system.mixins import CreateUpdateModelAMixin, OptimizationMixin
|
||||||
from rest_framework.decorators import action
|
from rest_framework.decorators import action
|
||||||
|
@ -63,13 +63,13 @@ class MaterialBatchViewSet(ListModelMixin, GenericViewSet):
|
||||||
queryset = self.queryset.filter(warehouse__id=data['warehouse'], material__id__in=data['materials'])
|
queryset = self.queryset.filter(warehouse__id=data['warehouse'], material__id__in=data['materials'])
|
||||||
return Response(MaterialBatchSerializer(instance=queryset, many=True).data)
|
return Response(MaterialBatchSerializer(instance=queryset, many=True).data)
|
||||||
|
|
||||||
class FIFODetailViewSet(ListModelMixin, DestroyModelMixin, GenericViewSet):
|
class FIFOItemViewSet(ListModelMixin, DestroyModelMixin, GenericViewSet):
|
||||||
"""
|
"""
|
||||||
出入库记录详情表
|
出入库记录详情表
|
||||||
"""
|
"""
|
||||||
perms_map = {'*': '*'}
|
perms_map = {'*': '*'}
|
||||||
queryset = FIFODetail.objects.select_related('material', 'fifo').all()
|
queryset = FIFOItem.objects.select_related('material', 'fifo').all()
|
||||||
serializer_class = FIFODetailSerializer
|
serializer_class = FIFOItemSerializer
|
||||||
filterset_fields = ['material', 'fifo']
|
filterset_fields = ['material', 'fifo']
|
||||||
search_fields = []
|
search_fields = []
|
||||||
ordering_fields = ['create_time']
|
ordering_fields = ['create_time']
|
||||||
|
@ -113,7 +113,7 @@ class FIFOViewSet(ListModelMixin, GenericViewSet):
|
||||||
审核通过
|
审核通过
|
||||||
"""
|
"""
|
||||||
obj = self.get_object()
|
obj = self.get_object()
|
||||||
for i in FIFODetail.objects.filter(fifo=obj):
|
for i in FIFOItem.objects.filter(fifo=obj):
|
||||||
if not i.is_testok:
|
if not i.is_testok:
|
||||||
raise APIException('未检验通过, 不可审核')
|
raise APIException('未检验通过, 不可审核')
|
||||||
if obj.is_audited:
|
if obj.is_audited:
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
# Generated by Django 3.2.6 on 2021-11-08 01:51
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
import django.utils.timezone
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('mtm', '0028_auto_20211102_1707'),
|
||||||
|
('qm', '0003_testrecord'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RenameField(
|
||||||
|
model_name='testrecord',
|
||||||
|
old_name='fifo_detail',
|
||||||
|
new_name='fifo_item',
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='TestRecordItem',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
|
||||||
|
('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')),
|
||||||
|
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
|
||||||
|
('field_name', models.CharField(max_length=50, verbose_name='字段名')),
|
||||||
|
('field_key', models.CharField(max_length=50, verbose_name='字段标识')),
|
||||||
|
('field_type', models.IntegerField(choices=[(1, '生产记录'), (2, '检验记录')], verbose_name='字段类型')),
|
||||||
|
('field_value', models.JSONField(blank=True, default=dict, verbose_name='录入值')),
|
||||||
|
('need_judge', models.BooleanField(default=False, verbose_name='是否需要判定')),
|
||||||
|
('is_testok', models.BooleanField(default=True, verbose_name='是否合格')),
|
||||||
|
('form_field', models.ForeignKey(db_constraint=False, on_delete=django.db.models.deletion.CASCADE, to='mtm.recordformfield', verbose_name='关联字段')),
|
||||||
|
('test_record', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='qm.testrecord', verbose_name='关联的检测记录')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'abstract': False,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
]
|
|
@ -51,7 +51,7 @@ class TestRecord(CommonAModel):
|
||||||
form = models.ForeignKey('mtm.recordform', verbose_name='所用表格', on_delete=models.CASCADE)
|
form = models.ForeignKey('mtm.recordform', verbose_name='所用表格', on_delete=models.CASCADE)
|
||||||
record_data = models.JSONField('记录数据', default=dict, blank=True)
|
record_data = models.JSONField('记录数据', default=dict, blank=True)
|
||||||
is_testok = models.BooleanField('是否合格', default=True)
|
is_testok = models.BooleanField('是否合格', default=True)
|
||||||
fifo_detail = models.ForeignKey('inm.fifodetail', verbose_name='关联的出入库批次', on_delete=models.CASCADE, null=True, blank=True)
|
fifo_item = models.ForeignKey('inm.fifoitem', verbose_name='关联的出入库批次', on_delete=models.CASCADE, null=True, blank=True)
|
||||||
|
|
||||||
|
|
||||||
class TestRecordItem(BaseModel):
|
class TestRecordItem(BaseModel):
|
||||||
|
|
|
@ -2,7 +2,7 @@ from rest_framework import serializers
|
||||||
from apps.mtm.models import RecordForm, RecordFormField
|
from apps.mtm.models import RecordForm, RecordFormField
|
||||||
from apps.mtm.serializers import RecordFormFieldSerializer, RecordFormSimpleSerializer
|
from apps.mtm.serializers import RecordFormFieldSerializer, RecordFormSimpleSerializer
|
||||||
from apps.system.serializers import FileSimpleSerializer
|
from apps.system.serializers import FileSimpleSerializer
|
||||||
from .models import Standard, TestItem, TestRecord
|
from .models import Standard, TestItem, TestRecord, TestRecordItem
|
||||||
|
|
||||||
class StandardCreateUpdateSerializer(serializers.ModelSerializer):
|
class StandardCreateUpdateSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
|
@ -35,10 +35,16 @@ class AnalysisItemSerializer(serializers.ModelSerializer):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class TestRecordItemSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = TestRecordItem
|
||||||
|
fields = ['form_field', 'field_value']
|
||||||
|
|
||||||
class TestRecordCreateSerializer(serializers.ModelSerializer):
|
class TestRecordCreateSerializer(serializers.ModelSerializer):
|
||||||
|
record_data = TestRecordItemSerializer(many=True)
|
||||||
class Meta:
|
class Meta:
|
||||||
model = TestRecord
|
model = TestRecord
|
||||||
fields = ['form', 'record_data', 'is_testok', 'fifo_detail']
|
fields = ['form', 'record_data', 'is_testok', 'fifo_item']
|
||||||
|
|
||||||
def create(self, validated_data):
|
def create(self, validated_data):
|
||||||
if 'is_testok' not in validated_data:
|
if 'is_testok' not in validated_data:
|
||||||
|
|
|
@ -43,7 +43,7 @@ class TestRecordViewSet(ModelViewSet):
|
||||||
检测记录
|
检测记录
|
||||||
"""
|
"""
|
||||||
perms_map = {'*': '*'}
|
perms_map = {'*': '*'}
|
||||||
queryset = TestRecord.objects.select_related('fifo_detail', 'form').all()
|
queryset = TestRecord.objects.select_related('fifo_item', 'form').all()
|
||||||
serializer_class = TestRecordListSerializer
|
serializer_class = TestRecordListSerializer
|
||||||
ordering = ['-id']
|
ordering = ['-id']
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@ class TestRecordViewSet(ModelViewSet):
|
||||||
def perform_create(self, serializer):
|
def perform_create(self, serializer):
|
||||||
obj = serializer.save(create_by = self.request.user)
|
obj = serializer.save(create_by = self.request.user)
|
||||||
# 如果检测合格
|
# 如果检测合格
|
||||||
if obj.fifo_detail:
|
if obj.fifo_item:
|
||||||
obj.fifo_detail.is_testok = True if obj.is_testok else False
|
obj.fifo_item.is_testok = True if obj.is_testok else False
|
||||||
obj.fifo_detail.is_tested = True
|
obj.fifo_item.is_tested = True
|
||||||
obj.fifo_detail.save()
|
obj.fifo_item.save()
|
|
@ -1,6 +1,6 @@
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
from rest_framework.serializers import ModelSerializer
|
from rest_framework.serializers import ModelSerializer
|
||||||
from apps.inm.models import FIFO, FIFODetail, MaterialBatch, WareHouse
|
from apps.inm.models import FIFO, FIFOItem, MaterialBatch, WareHouse
|
||||||
from apps.inm.signals import update_inm
|
from apps.inm.signals import update_inm
|
||||||
from apps.mtm.models import Material, RecordForm, Step
|
from apps.mtm.models import Material, RecordForm, Step
|
||||||
from apps.mtm.serializers import MaterialSimpleSerializer
|
from apps.mtm.serializers import MaterialSimpleSerializer
|
||||||
|
@ -46,7 +46,7 @@ class PickSerializer(serializers.Serializer):
|
||||||
i['fifo'] = fifo
|
i['fifo'] = fifo
|
||||||
i['count'] = i.pop('pick_count')
|
i['count'] = i.pop('pick_count')
|
||||||
i['is_teskok'] = True
|
i['is_teskok'] = True
|
||||||
FIFODetail.objects.create(**i)
|
FIFOItem.objects.create(**i)
|
||||||
# 更新车间物料
|
# 更新车间物料
|
||||||
wm, _ = WMaterial.objects.get_or_create(material=i['material'], batch=i['batch'], \
|
wm, _ = WMaterial.objects.get_or_create(material=i['material'], batch=i['batch'], \
|
||||||
subproduction_plan=sp,defaults={
|
subproduction_plan=sp,defaults={
|
||||||
|
|
Loading…
Reference in New Issue