fix:工装调整
This commit is contained in:
parent
53f6082071
commit
8de4d1197b
|
|
@ -0,0 +1,72 @@
|
|||
# Generated by Django 4.2.27 on 2026-05-26 07:52
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('system', '0007_alter_dept_create_by_alter_dept_third_info_and_more'),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('em', '0023_repair'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='ecate',
|
||||
name='create_by',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(class)s_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='ecate',
|
||||
name='update_by',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(class)s_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='echeckrecord',
|
||||
name='create_by',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(class)s_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='echeckrecord',
|
||||
name='update_by',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(class)s_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='einspect',
|
||||
name='create_by',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(class)s_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='einspect',
|
||||
name='update_by',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(class)s_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='equipment',
|
||||
name='belong_dept',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(class)s_belong_dept', to='system.dept', verbose_name='所属部门'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='equipment',
|
||||
name='create_by',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(class)s_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='equipment',
|
||||
name='update_by',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(class)s_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='repair',
|
||||
name='create_by',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(class)s_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='repair',
|
||||
name='update_by',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(class)s_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人'),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
# Generated by Django 4.2.27 on 2026-05-26 07:52
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('em', '0024_alter_ecate_create_by_alter_ecate_update_by_and_more'),
|
||||
('wpm', '0131_mlog_clear_defect'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='mlogbw',
|
||||
name='tooling',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='mlogbw_tooling', to='em.equipment', verbose_name='工装'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='mlogbw',
|
||||
name='equip',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='mlogbw_equip', to='em.equipment', verbose_name='设备'),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('wpm', '0132_mlogbw_tooling_alter_mlogbw_equip'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.SeparateDatabaseAndState(
|
||||
database_operations=[
|
||||
# Column already exists in DB; ensure it has a server-side default
|
||||
# so INSERT statements that omit the column don't violate NOT NULL.
|
||||
migrations.RunSQL(
|
||||
sql="ALTER TABLE wpm_mlogbw ALTER COLUMN pre_info SET DEFAULT '{}'::jsonb",
|
||||
reverse_sql="ALTER TABLE wpm_mlogbw ALTER COLUMN pre_info DROP DEFAULT",
|
||||
),
|
||||
],
|
||||
state_operations=[
|
||||
migrations.AddField(
|
||||
model_name='mlogbw',
|
||||
name='pre_info',
|
||||
field=models.JSONField(blank=True, default=dict, verbose_name='预处理信息'),
|
||||
),
|
||||
],
|
||||
),
|
||||
]
|
||||
|
|
@ -614,7 +614,9 @@ class Mlogbw(BaseModel):
|
|||
mlogbw_from = models.ForeignKey("self", verbose_name='来源个', on_delete=models.CASCADE, null=True, blank=True, related_name="w_mlogbw_from")
|
||||
wpr = models.ForeignKey("wpmw.wpr", verbose_name='关联产品', on_delete=models.SET_NULL
|
||||
, related_name='wpr_mlogbw', null=True, blank=True)
|
||||
equip = models.ForeignKey(Equipment, verbose_name='设备', on_delete=models.SET_NULL, null=True, blank=True)
|
||||
pre_info = models.JSONField('预处理信息', default=dict, blank=True)
|
||||
equip = models.ForeignKey(Equipment, verbose_name='设备', on_delete=models.SET_NULL, null=True, blank=True, related_name='mlogbw_equip')
|
||||
tooling = models.ForeignKey(Equipment, verbose_name='工装', on_delete=models.SET_NULL, null=True, blank=True, related_name='mlogbw_tooling')
|
||||
work_start_time = models.DateTimeField('开始加工时间', null=True, blank=True)
|
||||
work_end_time = models.DateTimeField('结束加工时间', null=True, blank=True)
|
||||
ftest = models.OneToOneField("qm.ftest", verbose_name='关联检验',
|
||||
|
|
|
|||
|
|
@ -878,13 +878,17 @@ class MlogbwCreateUpdateSerializer(CustomModelSerializer):
|
|||
ftest = FtestProcessSerializer(required=False, allow_null=True)
|
||||
equip_name = serializers.CharField(source='equip.name', read_only=True)
|
||||
equip_number = serializers.CharField(source='equip.number', read_only=True)
|
||||
tooling_name = serializers.CharField(source='tooling.name', read_only=True)
|
||||
tooling_number = serializers.CharField(source='tooling.number', read_only=True)
|
||||
wpr_number_out = serializers.CharField(source='wpr.number_out', read_only=True)
|
||||
wpr_pre_info = serializers.JSONField(source='wpr.pre_info', read_only=True)
|
||||
mlogb__batch = serializers.CharField(source='mlogb.batch', read_only=True)
|
||||
class Meta:
|
||||
model = Mlogbw
|
||||
fields = ["id", "number", "wpr", "note",
|
||||
"mlogb", "ftest", "equip", "work_start_time",
|
||||
"work_end_time", "mlogbw_from", "equip_name", "equip_number", "wpr_number_out", "mlogb__batch"]
|
||||
fields = ["id", "number", "wpr", "note",
|
||||
"mlogb", "ftest", "equip", "tooling", "work_start_time",
|
||||
"work_end_time", "mlogbw_from", "equip_name", "equip_number",
|
||||
"tooling_name", "tooling_number", "wpr_number_out", "wpr_pre_info", "mlogb__batch"]
|
||||
read_only_fields = ["mlogbw_from"]
|
||||
|
||||
def validate(self, attrs):
|
||||
|
|
|
|||
|
|
@ -1112,7 +1112,7 @@ class MlogbwViewSet(CustomModelViewSet):
|
|||
list_serializer_class = MlogbwListSerializer
|
||||
retrieve_serializer_class = MlogbwListSerializer
|
||||
filterset_class = MlogbwFilter
|
||||
select_related_fields = ["ftest", "equip", "wpr", "mlogb"]
|
||||
select_related_fields = ["ftest", "equip", "tooling", "wpr", "mlogb"]
|
||||
prefetch_related_fields = [
|
||||
Prefetch(
|
||||
"ftest__items_ftest",
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ from apps.utils.serializers import CustomModelSerializer
|
|||
from rest_framework import serializers
|
||||
from apps.inm.serializers import MaterialBatchSerializer
|
||||
from apps.wpm.serializers import WMaterialSerializer
|
||||
from apps.qm.models import FtestItem
|
||||
|
||||
class WprDefectSerializer(CustomModelSerializer):
|
||||
defect_name = serializers.CharField(source="defect.name", read_only=True)
|
||||
|
|
@ -58,4 +59,4 @@ class WprChangeNumberSerializer(serializers.Serializer):
|
|||
|
||||
|
||||
class WprPreInfoSerializer(serializers.Serializer):
|
||||
pre_info = serializers.JSONField(label="预处理信息")
|
||||
tooling = serializers.CharField(label="工装ID")
|
||||
|
|
@ -3,6 +3,7 @@ from apps.utils.viewsets import CustomModelViewSet, CustomGenericViewSet
|
|||
from apps.utils.mixins import CustomListModelMixin, CustomRetrieveModelMixin, ComplexQueryMixin, BulkUpdateModelMixin
|
||||
|
||||
from apps.wpmw.models import Wpr, WprDefect
|
||||
from apps.qm.models import FtestItem
|
||||
from apps.wpmw.serializers import WprSerializer, WprNewSerializer, WprDetailSerializer, WproutListSerializer, WprChangeNumberSerializer, WprPreInfoSerializer
|
||||
from rest_framework.response import Response
|
||||
from apps.mtm.models import Material
|
||||
|
|
@ -154,7 +155,9 @@ class WprViewSet(BulkUpdateModelMixin, CustomListModelMixin, CustomRetrieveModel
|
|||
wpr = self.get_object()
|
||||
sr = WprPreInfoSerializer(data=request.data)
|
||||
sr.is_valid(raise_exception=True)
|
||||
wpr.pre_info = sr.validated_data["pre_info"]
|
||||
raw_info = sr.validated_data
|
||||
from apps.utils.tools import update_dict
|
||||
wpr.pre_info = update_dict(wpr.pre_info, raw_info)
|
||||
wpr.save(update_fields=["pre_info"])
|
||||
return Response({"pre_info": wpr.pre_info})
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue