diff --git a/apps/wpm/views.py b/apps/wpm/views.py index d1fd6331..ce525e72 100644 --- a/apps/wpm/views.py +++ b/apps/wpm/views.py @@ -839,13 +839,13 @@ class MlogbInViewSet(CreateModelMixin, UpdateModelMixin, DestroyModelMixin, Cust number = mlogbin.number_from if d_count_real == 1: if wpr_number_rule: - number = MlogbInViewSet.gen_number_with_rule(wpr_number_rule, material_out) + number = MlogbInViewSet.gen_number_with_rule(wpr_number_rule, material_out, mlog) if number_to_batch: mlogbout, _ = Mlogb.objects.get_or_create(mlogb_from=mlogbin, defaults=update_dict(m_dict, {"count_real": 1, "count_ok": 1, "count_ok_full": 1, "batch": number})) Mlogbw.objects.get_or_create(number=number, mlogb=mlogbout) else: if wpr_number_rule: - number_list = MlogbInViewSet.gen_number_with_rule(wpr_number_rule, material_out, gen_count=d_count_real) + number_list = MlogbInViewSet.gen_number_with_rule(wpr_number_rule, material_out, mlog, gen_count=d_count_real) for i in range(d_count_real): if wpr_number_rule: numberx = number_list[i] @@ -864,15 +864,18 @@ class MlogbInViewSet(CreateModelMixin, UpdateModelMixin, DestroyModelMixin, Cust MlogbInViewSet.p_create_after(mlogbin) @classmethod - def gen_number_with_rule(cls, rule, material_out:Material, gen_count=1): + def gen_number_with_rule(cls, rule, material_out:Material, mlog:Mlog, gen_count=1): from apps.wpmw.models import Wpr - now = datetime.now() - timedelta(hours=6, minutes=20) - c_year = now.year + handle_date = mlog.handle_date + c_year = handle_date.year c_year2 = str(c_year)[-2:] - c_month = now.month + c_month = handle_date.month m_model = material_out.model - # 不按产品走,只按生产日期走 - wpr = Wpr.objects.filter(create_time__year=c_year, create_time__month=c_month).order_by("number").last() + # 按生产日志查询 + wpr = Wpr.objects.filter(wpr_mlogbw__mlogb__material_out=material_out, + wpr_mlogbw__mlogb__mlog__is_fix=False, + wpr_mlogbw__mlogb__mlog__submit_time__isnull=False, + wpr_mlogbw__mlogb__mlog__handle_date__year=c_year, wpr_mlogbw__mlogb__mlog__handle_date__month=c_month).order_by("number").last() cq_w = 4 if '02d' in rule: cq_w = 2