diff --git a/apps/pm/migrations/0011_alter_utask_state.py b/apps/pm/migrations/0011_alter_utask_state.py new file mode 100644 index 00000000..bea56bd9 --- /dev/null +++ b/apps/pm/migrations/0011_alter_utask_state.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.12 on 2023-10-26 01:40 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('pm', '0010_utask_belong_dept'), + ] + + operations = [ + migrations.AlterField( + model_name='utask', + name='state', + field=models.PositiveIntegerField(choices=[(10, '创建中'), (14, '已分解'), (20, '已下达'), (30, '生产中'), (40, '已提交')], default=10, help_text="((10, '创建中'), (14, '已分解'), (20, '已下达'), (30, '生产中'), (40, '已提交'))", verbose_name='状态'), + ), + ] diff --git a/apps/pm/models.py b/apps/pm/models.py index 14610847..275a011b 100644 --- a/apps/pm/models.py +++ b/apps/pm/models.py @@ -10,11 +10,13 @@ class Utask(CommonBDModel): 生产大任务 """ UTASK_CREATED = 10 + UTASK_DECOMPOSE = 14 UTASK_ASSGINED = 20 UTASK_WORKING = 30 UTASK_DONE = 40 UTASK_STATES = ( (UTASK_CREATED, '创建中'), + (UTASK_DECOMPOSE, '已分解'), (UTASK_ASSGINED, '已下达'), (UTASK_WORKING, '生产中'), (UTASK_DONE, '已提交') diff --git a/apps/pm/services.py b/apps/pm/services.py index 211b9994..e356d51e 100644 --- a/apps/pm/services.py +++ b/apps/pm/services.py @@ -61,6 +61,21 @@ class PmService: rela_days = (end_date - start_date).days + 1 if utask.mgroup: # 如果存在指定的mgroup则直接排产 pass + # if rela_days > 1: + # for i in range(rela_days): + # task_date = start_date + timedelta(days=i) + # Mtask.objects.create(**{ + # 'number': f'{number}_r{ind+1}_{i+1}', + # 'material_out': halfgood, + # 'material_in': material_in, + # 'mgroup': mgroup, + # 'count': task_count_day, + # 'start_date': task_date, + # 'end_date': task_date, + # 'utask': utask, + # 'create_by': user, + # 'update_by': user + # }) else: # 获取产品的加工路线 rqs = Route.get_routes(product) @@ -109,6 +124,8 @@ class PmService: 'create_by': user, 'update_by': user }) + utask.sate = Utask.UTASK_DECOMPOSE + utask.save() @classmethod def check_orderitems(cls, orderitems: QuerySet[OrderItem]): diff --git a/apps/pm/views.py b/apps/pm/views.py index 043cd987..d37dd0d7 100644 --- a/apps/pm/views.py +++ b/apps/pm/views.py @@ -44,9 +44,9 @@ class UtaskViewSet(CustomModelViewSet): @action(methods=['post'], detail=False, perms_map={'post': 'utask.schedue'}, serializer_class=PkSerializer) @transaction.atomic def schedue_mtasks(self, request, *args, **kwargs): - """大任务自动排产为小任务 + """任务分解 - 大任务自动排产为小任务 + 任务分解 """ sr = PkSerializer(data=request.data) sr.is_valid(raise_exception=True) @@ -65,10 +65,11 @@ class UtaskViewSet(CustomModelViewSet): 下达任务 """ ids = request.data.get('ids', []) - utasks = Utask.objects.filter(id__in=ids) + utasks = Utask.objects.filter( + id__in=ids, state=Utask.UTASK_DECOMPOSE) # 已分解的任务 Mtask.objects.filter(utask__in=utasks, state=Mtask.MTASK_CREATED).update( state=Mtask.MTASK_ASSGINED) - utasks.filter(state=Utask.UTASK_CREATED).update( + utasks.update( state=Utask.UTASK_ASSGINED) # 此处要更新订单状态 from apps.sam.models import OrderItem, Order