from .models import MaterialBatch from apps.mtm.models import Material, Mgroup from apps.system.models import Dept from rest_framework.exceptions import ParseError def correct_material_batch(): """矫正物料批次 """ mgroups = Mgroup.objects.all() p_dict = {} for mgroup in mgroups: if mgroup.process: processId = mgroup.process.id dept: Dept = mgroup.belong_dept if processId not in p_dict: p_dict[processId] = dept else: raise ParseError('存在多个同工序的工段:{}'.format(mgroup.name)) mbs = MaterialBatch.objects.filter(material__type__in=[Material.MA_TYPE_GOOD, Material.MA_TYPE_HALFGOOD], production_dept=None) for mb in mbs: if mb.material.process: processId = mb.material.process.id mb.production_dept = p_dict[processId] mb.save()