修改表名

This commit is contained in:
caoqianming 2021-11-08 09:53:16 +08:00
parent 950418a154
commit 5357a2d82a
11 changed files with 95 additions and 29 deletions

View File

@ -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',
),
]

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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)),
] ]

View File

@ -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:

View File

@ -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,
},
),
]

View File

@ -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):

View File

@ -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:

View File

@ -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()

View File

@ -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={