From b1339f6d6b2304ea8f3231e8125c25dea89fa6bd Mon Sep 17 00:00:00 2001 From: caoqianming Date: Thu, 26 Oct 2023 08:48:10 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20utask=E5=A2=9E=E5=8A=A0belong=5Fdept?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E5=8F=8A=E7=9B=B8=E5=BA=94=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/pm/filters.py | 1 + apps/pm/migrations/0010_utask_belong_dept.py | 20 ++++++++++++++++++++ apps/pm/models.py | 4 ++-- apps/pm/serializers.py | 8 ++++++++ apps/pm/services.py | 2 ++ 5 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 apps/pm/migrations/0010_utask_belong_dept.py diff --git a/apps/pm/filters.py b/apps/pm/filters.py index dbf67235..5f584a45 100644 --- a/apps/pm/filters.py +++ b/apps/pm/filters.py @@ -16,6 +16,7 @@ class UtaskFilter(filters.FilterSet): "material": ["exact"], "material__type": ["exact"], "material__is_hidden": ["exact"], + "belong_dept": ["exact"], "mgroup__belong_dept__name": ["exact"], "mtask_utask__mgroup": ["exact"], "mtask_utask__mgroup__belong_dept": ['exact'], diff --git a/apps/pm/migrations/0010_utask_belong_dept.py b/apps/pm/migrations/0010_utask_belong_dept.py new file mode 100644 index 00000000..8b825a1e --- /dev/null +++ b/apps/pm/migrations/0010_utask_belong_dept.py @@ -0,0 +1,20 @@ +# Generated by Django 3.2.12 on 2023-10-26 00:47 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('system', '0002_myschedule'), + ('pm', '0009_auto_20231025_1845'), + ] + + operations = [ + migrations.AddField( + model_name='utask', + name='belong_dept', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='utask_belong_dept', to='system.dept', verbose_name='所属部门'), + ), + ] diff --git a/apps/pm/models.py b/apps/pm/models.py index 914528f6..14610847 100644 --- a/apps/pm/models.py +++ b/apps/pm/models.py @@ -1,11 +1,11 @@ from django.db import models -from apps.utils.models import CommonADModel +from apps.utils.models import CommonADModel, CommonBDModel from apps.mtm.models import Material, Mgroup # Create your models here. -class Utask(CommonADModel): +class Utask(CommonBDModel): """ 生产大任务 """ diff --git a/apps/pm/serializers.py b/apps/pm/serializers.py index 8fcac4cc..bb83e98b 100644 --- a/apps/pm/serializers.py +++ b/apps/pm/serializers.py @@ -5,15 +5,23 @@ from apps.mtm.serializers import MaterialSerializer from apps.pm.models import Mtask, Utask from apps.sam.models import OrderItem from apps.utils.serializers import CustomModelSerializer +from apps.system.models import Dept class UtaskSerializer(CustomModelSerializer): material_ = MaterialSerializer(source='material', read_only=True) + belong_dept = serializers.PrimaryKeyRelatedField( + queryset=Dept.objects.all(), required=False) class Meta: model = Utask fields = '__all__' + def validate(self, attrs): + if 'mgroup' in attrs and attrs['mgroup']: + attrs['belong_dept'] = attrs['mgroup'].belong_dept + return attrs + def update(self, instance, validated_data): if instance.state != Mtask.MTASK_CREATED: raise ValidationError('任务非创建中不可编辑') diff --git a/apps/pm/services.py b/apps/pm/services.py index 97f92305..90658b47 100644 --- a/apps/pm/services.py +++ b/apps/pm/services.py @@ -57,6 +57,8 @@ class PmService: number, product, count, start_date, end_date = utask.number, utask.material, utask.count, utask.start_date, utask.end_date # 计算相差天数 rela_days = (end_date - start_date).days + 1 + if utask.mgroup: # 如果存在指定的mgroup则直接排产 + pass # 获取每个产品的加工路线 rqs = Route.get_routes(product) # 创建小任务