This commit is contained in:
zty 2024-09-23 10:04:46 +08:00
commit dd3c0d6f6b
5 changed files with 52 additions and 7 deletions

View File

@ -0,0 +1,38 @@
# Generated by Django 3.2.12 on 2024-09-20 01:14
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('qm', '0024_ftestwork_shift'),
]
operations = [
migrations.AlterField(
model_name='ftestwork',
name='count',
field=models.PositiveIntegerField(verbose_name='检验数量'),
),
migrations.AlterField(
model_name='ftestwork',
name='count_notok',
field=models.PositiveIntegerField(default=0, verbose_name='不合格数量'),
),
migrations.AlterField(
model_name='ftestwork',
name='count_ok',
field=models.PositiveIntegerField(default=0, verbose_name='合格数量'),
),
migrations.AlterField(
model_name='ftestwork',
name='count_sampling',
field=models.PositiveIntegerField(default=0, verbose_name='抽检数量'),
),
migrations.AlterField(
model_name='ftestwork',
name='count_sampling_ok',
field=models.PositiveIntegerField(default=0, verbose_name='抽检合格数量'),
),
]

View File

@ -118,11 +118,11 @@ class FtestWork(CommonBDModel):
material = models.ForeignKey(
Material, verbose_name='产品', on_delete=models.CASCADE)
batch = models.CharField('生产批次', max_length=50)
count = models.IntegerField('检验数量')
count_sampling = models.IntegerField('抽检数量', default=0)
count_sampling_ok = models.IntegerField('抽检合格数量', default=0)
count_ok = models.IntegerField('合格数量', default=0)
count_notok = models.IntegerField('不合格数量', default=0)
count = models.PositiveIntegerField('检验数量')
count_sampling = models.PositiveIntegerField('抽检数量', default=0)
count_sampling_ok = models.PositiveIntegerField('抽检合格数量', default=0)
count_ok = models.PositiveIntegerField('合格数量', default=0)
count_notok = models.PositiveIntegerField('不合格数量', default=0)
need_update_wm = models.BooleanField('是否更新车间库存', default=True)
count_notok_json = models.JSONField('不合格项数量统计', default=dict, null=False, blank=True)
test_user = models.ForeignKey(

View File

@ -93,6 +93,8 @@ class FtestWorkCreateUpdateSerializer(CustomModelSerializer):
else:
raise ValidationError(f'不合格项{k_2}必须为非负整数')
attrs['count_notok'] = count_notok
if type2 == 20 and attrs['count'] != attrs['count_ok'] + attrs['count_notok']:
raise ValidationError('全检时总数必须等于合格数+不合格数')
elif 'mb' in attrs and attrs['mb']:
attrs['wm'] = None
attrs['material'] = attrs['mb'].material

View File

@ -109,7 +109,7 @@ class WMaterial(CommonBDModel):
@property
def count_working(self):
return int(Mlogb.objects.filter(wm_in=self, mlog__work_end_time__isnull=True).aggregate(count=Sum('count_use'))['count'] or 0)
return Mlogb.objects.filter(wm_in=self, mlog__work_end_time__isnull=True).aggregate(count=Sum('count_use'))['count'] or 0
class Fmlog(CommonADModel):
route = models.ForeignKey(Route, verbose_name='生产路线', on_delete=models.SET_NULL, null=True, blank=True)

View File

@ -181,7 +181,7 @@ class WMaterialSerializer(CustomModelSerializer):
source='belong_dept.name', read_only=True)
material_origin_name = serializers.StringRelatedField(source='material_origin', read_only=True)
notok_sign_name = serializers.SerializerMethodField()
count_working = serializers.CharField(read_only=True, label='在制数量')
count_working = serializers.IntegerField(read_only=True, label='在制数量')
def get_notok_sign_name(self, obj):
return getattr(NotOkOption, obj.notok_sign, NotOkOption.qt).label if obj.notok_sign else None
@ -189,6 +189,11 @@ class WMaterialSerializer(CustomModelSerializer):
class Meta:
model = WMaterial
fields = '__all__'
def to_representation(self, instance):
ret = super().to_representation(instance)
ret['count_cando'] = ret['count'] - ret['count_working']
return ret
class MlogbSerializer(CustomModelSerializer):