feat: mlog增加部分字段以便单独创建日志

This commit is contained in:
caoqianming 2023-10-30 16:47:10 +08:00
parent 9e3e6bd1c6
commit b8bc753418
4 changed files with 94 additions and 2 deletions

View File

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

View File

@ -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='关联任务'),
),
]

View File

@ -4,6 +4,7 @@ from apps.mtm.models import Mgroup, Team, Shift, Material
from apps.pm.models import Mtask from apps.pm.models import Mtask
from apps.system.models import User from apps.system.models import User
from django.utils.timezone import localtime from django.utils.timezone import localtime
from apps.em.models import Equipment
# Create your models here. # Create your models here.
@ -82,10 +83,17 @@ class Mlog(CommonADModel):
生产日志 生产日志
""" """
mtask = models.ForeignKey( 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) batch = models.CharField('批次号', max_length=50)
count_use = models.PositiveIntegerField('领用数', default=0) count_use = models.PositiveIntegerField('领用数', default=0)
count_real = models.PositiveIntegerField('实际生产数', default=0) count_real = models.PositiveIntegerField('实际生产数', default=0)
count_real_weight = models.FloatField('生产重量', default=0)
count_ok = models.PositiveIntegerField('合格数', default=0) count_ok = models.PositiveIntegerField('合格数', default=0)
count_notok = models.PositiveIntegerField('不合格数', default=0) count_notok = models.PositiveIntegerField('不合格数', default=0)
@ -102,5 +110,8 @@ class Mlog(CommonADModel):
handle_date = models.DateField('操作日期') handle_date = models.DateField('操作日期')
handle_user = models.ForeignKey( handle_user = models.ForeignKey(
User, verbose_name='操作人', on_delete=models.CASCADE, related_name='mlog_handle_user') 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( handle_leader = models.ForeignKey(
User, verbose_name='班长', on_delete=models.CASCADE, null=True, blank=True, related_name='mlog_handle_leader') User, verbose_name='班长', on_delete=models.CASCADE, null=True, blank=True, related_name='mlog_handle_leader')
note = models.TextField('备注', default=0)

View File

@ -93,10 +93,18 @@ class MlogSerializer(CustomModelSerializer):
read_only_fields = EXCLUDE_FIELDS read_only_fields = EXCLUDE_FIELDS
def create(self, validated_data): def create(self, validated_data):
mtask = validated_data['mtask'] mtask = validated_data.get('mtask', None)
batch = validated_data['batch'] batch = validated_data['batch']
handle_date = validated_data['handle_date'] handle_date = validated_data['handle_date']
handle_user = validated_data['handle_user'] 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(): if not WMaterial.objects.filter(batch=batch).exists():
raise ValidationError('批次号不存在') raise ValidationError('批次号不存在')
if Mlog.objects.filter(mtask=mtask, batch=batch, handle_date=handle_date, handle_user=handle_user).exists(): 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('batch', None)
validated_data.pop('handle_date', None) validated_data.pop('handle_date', None)
validated_data.pop('handle_user', None) validated_data.pop('handle_user', None)
validated_data.pop('mgroup', None)
return super().update(instance, validated_data) return super().update(instance, validated_data)
def validate(self, attrs): def validate(self, attrs):