fix: 一些bug调整

This commit is contained in:
caoqianming 2025-03-04 12:33:51 +08:00
parent 71cbda504c
commit aa32047bf7
6 changed files with 28 additions and 17 deletions

View File

@ -144,10 +144,10 @@ class RoutePackSerializer(CustomModelSerializer):
fields = '__all__' fields = '__all__'
read_only_fields = EXCLUDE_FIELDS + ['state', 'ticket'] read_only_fields = EXCLUDE_FIELDS + ['state', 'ticket']
def update(self, instance, validated_data): # def update(self, instance, validated_data):
if validated_data['material'] != instance.material: # if validated_data['material'] != instance.material:
raise ParseError('不可变更产品') # raise ParseError('不可变更产品')
return super().update(instance, validated_data) # return super().update(instance, validated_data)
class RouteSerializer(CustomModelSerializer): class RouteSerializer(CustomModelSerializer):

View File

@ -16,15 +16,15 @@ class DefectSerializer(CustomModelSerializer):
fields = '__all__' fields = '__all__'
read_only_fields = EXCLUDE_FIELDS read_only_fields = EXCLUDE_FIELDS
def create(self, validated_data): # def create(self, validated_data):
code = validated_data["code"] # code = validated_data["code"]
if Defect.objects.get_queryset(all=True).filter(code=code).exists(): # if Defect.objects.get_queryset(all=True).filter(code=code).exists():
raise ValidationError("缺陷标识已存在") # raise ValidationError("缺陷标识已存在")
return super().create(validated_data) # return super().create(validated_data)
def update(self, instance, validated_data): # def update(self, instance, validated_data):
validated_data.pop("code", None) # validated_data.pop("code", None)
return super().update(instance, validated_data) # return super().update(instance, validated_data)
class TestItemSerializer(CustomModelSerializer): class TestItemSerializer(CustomModelSerializer):
process_name = serializers.CharField(source="process.name", read_only=True) process_name = serializers.CharField(source="process.name", read_only=True)

View File

@ -23,8 +23,9 @@ def ftestwork_submit_validate(ins: FtestWork):
def ftestwork_submit(ins:FtestWork, user: User): def ftestwork_submit(ins:FtestWork, user: User):
wm:WMaterial = ins.wm wm:WMaterial = ins.wm
fwd_qs = FtestworkDefect.objects.filter(ftestwork=ins)
if ins.need_update_wm: 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: if wm.state == WMaterial.WM_TEST:
# 更新对应的车间库存 # 更新对应的车间库存
wm.count = wm.count - ins.count wm.count = wm.count - ins.count

View File

@ -491,7 +491,7 @@ class MlogSerializer(CustomModelSerializer):
if need_mdefect: if need_mdefect:
MlogbDefect.objects.filter(mlogb__mlog=instance).delete() MlogbDefect.objects.filter(mlogb__mlog=instance).delete()
mlogb_defect_objects = [ 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 for item in mlogdefect if item["count"] > 0
] ]
if mlogb_defect_objects: if mlogb_defect_objects:

View File

@ -31,7 +31,7 @@ def get_alldata_with_batch_gx(batch: str):
""" """
光芯获取batch的统计数据 光芯获取batch的统计数据
""" """
pass return None, None
def get_alldata_with_batch(batch: str): def get_alldata_with_batch(batch: str):
""" """

View File

@ -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.wpm.services import mlog_submit_validate, generate_new_batch
from apps.wf.models import State from apps.wf.models import State
from apps.wpmw.models import Wpr 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 apps.enm.models import EnStat
from django.db.models import Q from django.db.models import Q
from apps.utils.tools import convert_ordereddict 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_in__number', 'material_in__specification', 'batch', 'material_in__model',
'material_out__name', 'material_out__number', 'material_out__specification', 'material_out__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): def add_info_for_list(self, data):
czx_dict = {} czx_dict = {}
for item in data: for item in data:
czx_dict.update(item.get("oinfo_json", {})) 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): if self.request.query_params.get('with_mlogb', False):
data_dict = {item['id']: {**item, "mlogb_full": [], "mlogb": []} for item in data} 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") 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'} perms_map = {'get': '*', 'post': 'mlog.create', 'put': 'mlog.update', 'delete': 'mlog.delete'}
queryset = Fmlog.objects.all() queryset = Fmlog.objects.all()
serializer_class = FmlogSerializer serializer_class = FmlogSerializer
# update_serializer_class = FmlogUpdateSerializer update_serializer_class = FmlogUpdateSerializer
filterset_fields = ['mtask', 'mgroup', 'mtask__route'] filterset_fields = ['mtask', 'mgroup', 'mtask__route']
select_related_fields = ['mtask', 'mgroup', 'mtask__route', 'mtask__route__routepack'] select_related_fields = ['mtask', 'mgroup', 'mtask__route', 'mtask__route__routepack']