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

View File

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