feat: mlog增加部分字段以便单独创建日志
This commit is contained in:
parent
9e3e6bd1c6
commit
b8bc753418
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 3.2.12 on 2023-10-30 08:45
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('mtm', '0019_route_is_count_utask'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='material',
|
||||
name='cate',
|
||||
field=models.CharField(default='', max_length=20, verbose_name='大类'),
|
||||
),
|
||||
]
|
|
@ -0,0 +1,54 @@
|
|||
# Generated by Django 3.2.12 on 2023-10-30 08:45
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('em', '0005_auto_20230906_1431'),
|
||||
('mtm', '0020_material_cate'),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('pm', '0013_mtask_is_count_utask'),
|
||||
('wpm', '0015_auto_20231030_1133'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='mlog',
|
||||
name='count_real_weight',
|
||||
field=models.FloatField(default=0, verbose_name='生产重量'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='mlog',
|
||||
name='equipment',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='em.equipment', verbose_name='生产设备'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='mlog',
|
||||
name='handle_users',
|
||||
field=models.ManyToManyField(blank=True, to=settings.AUTH_USER_MODEL, verbose_name='操作人(多选)'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='mlog',
|
||||
name='material_out',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='mtm.material', verbose_name='产物'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='mlog',
|
||||
name='mgroup',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='mtm.mgroup', verbose_name='工段'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='mlog',
|
||||
name='note',
|
||||
field=models.TextField(default=0, verbose_name='备注'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='mlog',
|
||||
name='mtask',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='pm.mtask', verbose_name='关联任务'),
|
||||
),
|
||||
]
|
|
@ -4,6 +4,7 @@ from apps.mtm.models import Mgroup, Team, Shift, Material
|
|||
from apps.pm.models import Mtask
|
||||
from apps.system.models import User
|
||||
from django.utils.timezone import localtime
|
||||
from apps.em.models import Equipment
|
||||
|
||||
# Create your models here.
|
||||
|
||||
|
@ -82,10 +83,17 @@ class Mlog(CommonADModel):
|
|||
生产日志
|
||||
"""
|
||||
mtask = models.ForeignKey(
|
||||
Mtask, verbose_name='关联生产', on_delete=models.CASCADE)
|
||||
Mtask, verbose_name='关联任务', on_delete=models.CASCADE, null=True, blank=True)
|
||||
mgroup = models.ForeignKey(
|
||||
Mgroup, verbose_name='工段', on_delete=models.CASCADE, null=True, blank=True)
|
||||
material_out = models.ForeignKey(
|
||||
Material, verbose_name='产物', on_delete=models.CASCADE, null=True, blank=True)
|
||||
equipment = models.ForeignKey(
|
||||
Equipment, verbose_name='生产设备', on_delete=models.CASCADE, null=True, blank=True)
|
||||
batch = models.CharField('批次号', max_length=50)
|
||||
count_use = models.PositiveIntegerField('领用数', default=0)
|
||||
count_real = models.PositiveIntegerField('实际生产数', default=0)
|
||||
count_real_weight = models.FloatField('生产重量', default=0)
|
||||
count_ok = models.PositiveIntegerField('合格数', default=0)
|
||||
count_notok = models.PositiveIntegerField('不合格数', default=0)
|
||||
|
||||
|
@ -102,5 +110,8 @@ class Mlog(CommonADModel):
|
|||
handle_date = models.DateField('操作日期')
|
||||
handle_user = models.ForeignKey(
|
||||
User, verbose_name='操作人', on_delete=models.CASCADE, related_name='mlog_handle_user')
|
||||
handle_users = models.ManyToManyField(
|
||||
User, verbose_name='操作人(多选)', blank=True)
|
||||
handle_leader = models.ForeignKey(
|
||||
User, verbose_name='班长', on_delete=models.CASCADE, null=True, blank=True, related_name='mlog_handle_leader')
|
||||
note = models.TextField('备注', default=0)
|
||||
|
|
|
@ -93,10 +93,18 @@ class MlogSerializer(CustomModelSerializer):
|
|||
read_only_fields = EXCLUDE_FIELDS
|
||||
|
||||
def create(self, validated_data):
|
||||
mtask = validated_data['mtask']
|
||||
mtask = validated_data.get('mtask', None)
|
||||
batch = validated_data['batch']
|
||||
handle_date = validated_data['handle_date']
|
||||
handle_user = validated_data['handle_user']
|
||||
if mtask:
|
||||
validated_data['mgroup'] = mtask.mgroup
|
||||
validated_data['material_out'] = mtask.material_out
|
||||
else:
|
||||
mgroup = validated_data['mgroup']
|
||||
material_out = validated_data['material_out']
|
||||
if not (mgroup and material_out):
|
||||
raise ValidationError('缺少工段或产物!')
|
||||
if not WMaterial.objects.filter(batch=batch).exists():
|
||||
raise ValidationError('批次号不存在')
|
||||
if Mlog.objects.filter(mtask=mtask, batch=batch, handle_date=handle_date, handle_user=handle_user).exists():
|
||||
|
@ -108,6 +116,7 @@ class MlogSerializer(CustomModelSerializer):
|
|||
validated_data.pop('batch', None)
|
||||
validated_data.pop('handle_date', None)
|
||||
validated_data.pop('handle_user', None)
|
||||
validated_data.pop('mgroup', None)
|
||||
return super().update(instance, validated_data)
|
||||
|
||||
def validate(self, attrs):
|
||||
|
|
Loading…
Reference in New Issue