diff --git a/apps/wpm/migrations/0028_mlog_material_in.py b/apps/wpm/migrations/0028_mlog_material_in.py new file mode 100644 index 00000000..9b6200d7 --- /dev/null +++ b/apps/wpm/migrations/0028_mlog_material_in.py @@ -0,0 +1,20 @@ +# Generated by Django 3.2.12 on 2023-11-02 08:12 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('mtm', '0023_auto_20231102_1128'), + ('wpm', '0027_alter_mlogb_material_out'), + ] + + operations = [ + migrations.AddField( + model_name='mlog', + name='material_in', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='mlog_material_in', to='mtm.material', verbose_name='消耗物'), + ), + ] diff --git a/apps/wpm/models.py b/apps/wpm/models.py index b7f5ab29..d3f8a255 100644 --- a/apps/wpm/models.py +++ b/apps/wpm/models.py @@ -90,6 +90,8 @@ class Mlog(CommonADModel): 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_in = models.ForeignKey( + Material, verbose_name='消耗物', on_delete=models.CASCADE, null=True, blank=True, related_name='mlog_material_in') material_out = models.ForeignKey( Material, verbose_name='产物', on_delete=models.CASCADE, null=True, blank=True, related_name='mlog_material_out') equipment = models.ForeignKey( diff --git a/apps/wpm/serializers.py b/apps/wpm/serializers.py index dc625669..0f9c6e15 100644 --- a/apps/wpm/serializers.py +++ b/apps/wpm/serializers.py @@ -124,12 +124,13 @@ class MlogSerializer(CustomModelSerializer): ['submit_time', 'submit_user', 'material_outs'] def create(self, validated_data): - mtask = validated_data.get('mtask', None) + 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_in'] = mtask.material_in material_out = mtask.material_out validated_data['material_out'] = material_out # if not WMaterial.objects.filter(batch=batch).exists(): diff --git a/apps/wpm/services.py b/apps/wpm/services.py index 76917b4a..86126460 100644 --- a/apps/wpm/services.py +++ b/apps/wpm/services.py @@ -11,7 +11,7 @@ from rest_framework.exceptions import ParseError from apps.system.models import User from apps.inm.models import MIO, MIOItem, MIOItemA from apps.pm.models import Mtask -from apps.mtm.models import Mgroup, Shift, Material +from apps.mtm.models import Mgroup, Shift, Material, Route from .models import SfLog, SfLogExp, WMaterial, Mlog, Mlogb, Handover @@ -126,10 +126,9 @@ def mlog_submit(mlog: Mlog, user: User, now: Union[datetime.datetime, None]): return if now is None: now = timezone.now() - mtask = mlog.mtask - belong_dept = mtask.mgroup.belong_dept - material_out = mtask.material_out - material_in = mtask.material_in + belong_dept = mlog.mgroup.belong_dept + material_out = mlog.material_out + material_in = mlog.material_in if material_in and material_in.is_hidden is False: # 需要进行车间库存管理 # 需要判断领用数是否合理 material_has_qs = WMaterial.objects.filter(