From aa32047bf7bd436a291fed3c6bd4284c1d0a7f0e Mon Sep 17 00:00:00 2001 From: caoqianming Date: Tue, 4 Mar 2025 12:33:51 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=B8=80=E4=BA=9Bbug=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/mtm/serializers.py | 8 ++++---- apps/qm/serializers.py | 16 ++++++++-------- apps/qm/services.py | 3 ++- apps/wpm/serializers.py | 2 +- apps/wpm/services_2.py | 2 +- apps/wpm/views.py | 14 ++++++++++++-- 6 files changed, 28 insertions(+), 17 deletions(-) diff --git a/apps/mtm/serializers.py b/apps/mtm/serializers.py index 161bea6e..e65a4943 100644 --- a/apps/mtm/serializers.py +++ b/apps/mtm/serializers.py @@ -144,10 +144,10 @@ class RoutePackSerializer(CustomModelSerializer): fields = '__all__' read_only_fields = EXCLUDE_FIELDS + ['state', 'ticket'] - def update(self, instance, validated_data): - if validated_data['material'] != instance.material: - raise ParseError('不可变更产品') - return super().update(instance, validated_data) + # def update(self, instance, validated_data): + # if validated_data['material'] != instance.material: + # raise ParseError('不可变更产品') + # return super().update(instance, validated_data) class RouteSerializer(CustomModelSerializer): diff --git a/apps/qm/serializers.py b/apps/qm/serializers.py index 68da83c8..bb71fbfa 100644 --- a/apps/qm/serializers.py +++ b/apps/qm/serializers.py @@ -16,15 +16,15 @@ class DefectSerializer(CustomModelSerializer): fields = '__all__' read_only_fields = EXCLUDE_FIELDS - def create(self, validated_data): - code = validated_data["code"] - if Defect.objects.get_queryset(all=True).filter(code=code).exists(): - raise ValidationError("缺陷标识已存在") - return super().create(validated_data) + # def create(self, validated_data): + # code = validated_data["code"] + # if Defect.objects.get_queryset(all=True).filter(code=code).exists(): + # raise ValidationError("缺陷标识已存在") + # return super().create(validated_data) - def update(self, instance, validated_data): - validated_data.pop("code", None) - return super().update(instance, validated_data) + # def update(self, instance, validated_data): + # validated_data.pop("code", None) + # return super().update(instance, validated_data) class TestItemSerializer(CustomModelSerializer): process_name = serializers.CharField(source="process.name", read_only=True) diff --git a/apps/qm/services.py b/apps/qm/services.py index c2f19360..babdfca6 100644 --- a/apps/qm/services.py +++ b/apps/qm/services.py @@ -23,8 +23,9 @@ def ftestwork_submit_validate(ins: FtestWork): def ftestwork_submit(ins:FtestWork, user: User): wm:WMaterial = ins.wm + fwd_qs = FtestworkDefect.objects.filter(ftestwork=ins) if ins.need_update_wm: - if ins.qct is None: + if ins.qct is None or not fwd_qs.exists(): if wm.state == WMaterial.WM_TEST: # 更新对应的车间库存 wm.count = wm.count - ins.count diff --git a/apps/wpm/serializers.py b/apps/wpm/serializers.py index 8508f2d2..8cfd02e5 100644 --- a/apps/wpm/serializers.py +++ b/apps/wpm/serializers.py @@ -491,7 +491,7 @@ class MlogSerializer(CustomModelSerializer): if need_mdefect: MlogbDefect.objects.filter(mlogb__mlog=instance).delete() mlogb_defect_objects = [ - MlogbDefect(**{**item, "mlogb": mlogb, "id": idWorker.get_id()}) + MlogbDefect(**{**item, "mlogb": mox, "id": idWorker.get_id()}) for item in mlogdefect if item["count"] > 0 ] if mlogb_defect_objects: diff --git a/apps/wpm/services_2.py b/apps/wpm/services_2.py index 914a7490..5911613f 100644 --- a/apps/wpm/services_2.py +++ b/apps/wpm/services_2.py @@ -31,7 +31,7 @@ def get_alldata_with_batch_gx(batch: str): """ 光芯获取batch的统计数据 """ - pass + return None, None def get_alldata_with_batch(batch: str): """ diff --git a/apps/wpm/views.py b/apps/wpm/views.py index d36cd22f..1111acb9 100644 --- a/apps/wpm/views.py +++ b/apps/wpm/views.py @@ -30,7 +30,7 @@ from .services import mlog_submit, handover_submit, mlog_revert from apps.wpm.services import mlog_submit_validate, generate_new_batch from apps.wf.models import State from apps.wpmw.models import Wpr -from apps.qm.models import Qct, Ftest +from apps.qm.models import Qct, Ftest, TestItem from apps.enm.models import EnStat from django.db.models import Q from apps.utils.tools import convert_ordereddict @@ -181,10 +181,20 @@ class MlogViewSet(CustomModelViewSet): 'material_in__number', 'material_in__specification', 'batch', 'material_in__model', 'material_out__name', 'material_out__number', 'material_out__specification', 'material_out__model',] + def add_info_for_item(self, data): + if data.get("oinfo_json", {}): + czx_dict = dict(TestItem.objects.filter(id__in=data.get("oinfo_json", {}).keys()).values_list('id', 'name')) + data["oinfo_json_"] = {czx_dict.get(k, k): v for k, v in data.get("oinfo_json", {}).items()} + return data + def add_info_for_list(self, data): czx_dict = {} for item in data: czx_dict.update(item.get("oinfo_json", {})) + czx_dict = dict(TestItem.objects.filter(id__in=czx_dict.keys()).values_list('id', 'name')) + for item in data: + if item.get("oinfo_json", None): + item["oinfo_json_"] = {czx_dict.get(k, k): v for k, v in item.get("oinfo_json", {}).items()} if self.request.query_params.get('with_mlogb', False): data_dict = {item['id']: {**item, "mlogb_full": [], "mlogb": []} for item in data} mlogb_qs = Mlogb.objects.filter(mlog__id__in=data_dict.keys()).select_related("material_in", "material_out").order_by("create_time") @@ -635,7 +645,7 @@ class FmlogViewSet(CustomModelViewSet): perms_map = {'get': '*', 'post': 'mlog.create', 'put': 'mlog.update', 'delete': 'mlog.delete'} queryset = Fmlog.objects.all() serializer_class = FmlogSerializer - # update_serializer_class = FmlogUpdateSerializer + update_serializer_class = FmlogUpdateSerializer filterset_fields = ['mtask', 'mgroup', 'mtask__route'] select_related_fields = ['mtask', 'mgroup', 'mtask__route', 'mtask__route__routepack']