feat: 增加外协生产日志功能
This commit is contained in:
parent
caf83b7e0f
commit
c068c47bc7
|
@ -0,0 +1,25 @@
|
||||||
|
# Generated by Django 3.2.12 on 2024-07-23 02:06
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('pum', '0006_supplier_can_outsource'),
|
||||||
|
('wpm', '0057_auto_20240719_1002'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='mlog',
|
||||||
|
name='mtype',
|
||||||
|
field=models.PositiveSmallIntegerField(choices=[(10, '自生产'), (20, '外协生产')], default=10, help_text='10:自生产;20:外协生产', verbose_name='生产类型'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='mlog',
|
||||||
|
name='supplier',
|
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='pum.supplier', verbose_name='外协供应商'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -7,6 +7,7 @@ from django.utils.timezone import localtime
|
||||||
from apps.em.models import Equipment
|
from apps.em.models import Equipment
|
||||||
from apps.system.models import Dept
|
from apps.system.models import Dept
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
|
from apps.pum.models import Supplier
|
||||||
|
|
||||||
# Create your models here.
|
# Create your models here.
|
||||||
|
|
||||||
|
@ -105,7 +106,11 @@ class Mlog(CommonADModel):
|
||||||
# 变成父级的字段
|
# 变成父级的字段
|
||||||
MLOG_ONETIME = 10
|
MLOG_ONETIME = 10
|
||||||
MLOG_STEP = 20
|
MLOG_STEP = 20
|
||||||
|
MTYPE_SELF = 10
|
||||||
|
MTYPE_OUT = 20
|
||||||
fill_way = models.PositiveSmallIntegerField("填写方式", default=10, help_text='10:一次填写;20:分步填写')
|
fill_way = models.PositiveSmallIntegerField("填写方式", default=10, help_text='10:一次填写;20:分步填写')
|
||||||
|
mtype = models.PositiveSmallIntegerField('生产类型', default=10, help_text='10:自生产;20:外协生产', choices=((10, '自生产'), (20, '外协生产')))
|
||||||
|
supplier = models.ForeignKey(Supplier, verbose_name='外协供应商', on_delete=models.SET_NULL, null=True, blank=True)
|
||||||
work_start_time = models.DateTimeField('生产开始时间', null=True, blank=True)
|
work_start_time = models.DateTimeField('生产开始时间', null=True, blank=True)
|
||||||
work_end_time = models.DateTimeField('生产结束时间', null=True, blank=True)
|
work_end_time = models.DateTimeField('生产结束时间', null=True, blank=True)
|
||||||
hour_work = models.FloatField('预计工时', null=True, blank=True)
|
hour_work = models.FloatField('预计工时', null=True, blank=True)
|
||||||
|
|
|
@ -208,6 +208,7 @@ class MlogbDetailSerializer(CustomModelSerializer):
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
|
|
||||||
class MlogSerializer(CustomModelSerializer):
|
class MlogSerializer(CustomModelSerializer):
|
||||||
|
supplier_name = serializers.CharField(source='supplier.name', read_only=True)
|
||||||
belong_dept = serializers.CharField(
|
belong_dept = serializers.CharField(
|
||||||
source='mgroup.belong_dept.id', read_only=True)
|
source='mgroup.belong_dept.id', read_only=True)
|
||||||
belong_dept_name = serializers.CharField(
|
belong_dept_name = serializers.CharField(
|
||||||
|
@ -311,6 +312,7 @@ class MlogSerializer(CustomModelSerializer):
|
||||||
|
|
||||||
def validate(self, attrs):
|
def validate(self, attrs):
|
||||||
attrs['fill_way'] = Mlog.MLOG_ONETIME
|
attrs['fill_way'] = Mlog.MLOG_ONETIME
|
||||||
|
attrs['mtype'] = Mlog.MTYPE_SELF # 默认为自生产
|
||||||
mtask = attrs.get('mtask', None)
|
mtask = attrs.get('mtask', None)
|
||||||
count_notok = 0
|
count_notok = 0
|
||||||
for i in attrs:
|
for i in attrs:
|
||||||
|
@ -335,14 +337,16 @@ class MlogSerializer(CustomModelSerializer):
|
||||||
class MlogInitSerializer(CustomModelSerializer):
|
class MlogInitSerializer(CustomModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Mlog
|
model = Mlog
|
||||||
fields = ['id', 'work_start_time', 'mgroup', 'reminder_interval_list', 'route', 'equipment', 'handle_user', 'note']
|
fields = ['id', 'work_start_time', 'mgroup', 'reminder_interval_list', 'route', 'equipment', 'handle_user', 'note', 'mtype', 'supplier']
|
||||||
extra_kwargs = {
|
extra_kwargs = {
|
||||||
'work_start_time': {'required': True},
|
'work_start_time': {'required': True},
|
||||||
'route':{'required': True},
|
'route':{'required': True},
|
||||||
'mgroup': {'required': True}
|
'mgroup': {'required': True},
|
||||||
|
'mtype': {'required': True}
|
||||||
}
|
}
|
||||||
|
|
||||||
def validate(self, attrs):
|
def validate(self, attrs):
|
||||||
|
mtype = attrs['mtype']
|
||||||
route: Route = attrs['route']
|
route: Route = attrs['route']
|
||||||
mgroup: Mgroup = attrs['mgroup']
|
mgroup: Mgroup = attrs['mgroup']
|
||||||
if route.process != mgroup.process:
|
if route.process != mgroup.process:
|
||||||
|
@ -351,6 +355,10 @@ class MlogInitSerializer(CustomModelSerializer):
|
||||||
attrs['material_in'] = route.material_in
|
attrs['material_in'] = route.material_in
|
||||||
attrs['material_out'] = route.material_out
|
attrs['material_out'] = route.material_out
|
||||||
attrs['fill_way'] = Mlog.MLOG_STEP
|
attrs['fill_way'] = Mlog.MLOG_STEP
|
||||||
|
if mtype == Mlog.MTYPE_OUT:
|
||||||
|
supplier = attrs.get('supplier', None)
|
||||||
|
if not supplier:
|
||||||
|
raise ValidationError('外协必须选择外协单位')
|
||||||
return attrs
|
return attrs
|
||||||
|
|
||||||
class MlogChangeSerializer(CustomModelSerializer):
|
class MlogChangeSerializer(CustomModelSerializer):
|
||||||
|
|
|
@ -141,7 +141,7 @@ class MlogViewSet(CustomModelViewSet):
|
||||||
queryset = Mlog.objects.all()
|
queryset = Mlog.objects.all()
|
||||||
serializer_class = MlogSerializer
|
serializer_class = MlogSerializer
|
||||||
select_related_fields = ['create_by', 'update_by', 'mtask',
|
select_related_fields = ['create_by', 'update_by', 'mtask',
|
||||||
'handle_user', 'handle_user_2', 'equipment', 'equipment_2', 'material_in', 'material_out']
|
'handle_user', 'handle_user_2', 'equipment', 'equipment_2', 'material_in', 'material_out', 'supplier']
|
||||||
prefetch_related_fields = ['handle_users',
|
prefetch_related_fields = ['handle_users',
|
||||||
'material_outs', 'b_mlog', 'equipments']
|
'material_outs', 'b_mlog', 'equipments']
|
||||||
filterset_class = MlogFilter
|
filterset_class = MlogFilter
|
||||||
|
|
Loading…
Reference in New Issue