diff --git a/apps/wpm/scripts/batch_gzerp.py b/apps/wpm/scripts/batch_gzerp.py index 27a6c508..e826b176 100644 --- a/apps/wpm/scripts/batch_gzerp.py +++ b/apps/wpm/scripts/batch_gzerp.py @@ -4,7 +4,7 @@ from apps.wpm.models import Mlog, Handover from apps.mtm.models import Mgroup import decimal from apps.system.models import Dept -from apps.inm.models import MIOItem +from apps.inm.models import MIOItem, MIOItemA, MaterialBatchA from apps.qm.models import FtestWork from apps.wpm.services_2 import get_f_l_date import json @@ -384,11 +384,6 @@ def main(batch: str, mgroup_obj): data[f'六车间生产入库_{field}'] = getattr(item, field) else: data[f'六车间生产入库_{field}'] += getattr(item, field) - data["六车间生产入库_日期"] = list(set(data["六车间生产入库_日期"])) - data["六车间生产入库_日期"].sort() - data["六车间生产入库_小日期"] = max(data["六车间生产入库_日期"]).strftime("%Y-%m-%d") - data["六车间生产入库_大日期"] = min(data["六车间生产入库_日期"]).strftime("%Y-%m-%d") - data["六车间生产入库_日期"] = ";".join([item.strftime("%Y-%m-%d") for item in data["六车间生产入库_日期"]]) data["六车间生产入库_检验日期"] = list(set(data["六车间生产入库_检验日期"])) data["六车间生产入库_检验日期"] = ";".join([item.strftime("%Y-%m-%d") for item in data["六车间生产入库_检验日期"]]) data['六车间生产入库_检验人'] = list(set(data['六车间生产入库_检验人'])) @@ -399,6 +394,30 @@ def main(batch: str, mgroup_obj): # myLogger.error("六车间生产入库_合格率decimal.InvalidOperation-{data}") data['六车间生产入库_合格率'] = 0 + # 六车间入库时会有组合件 + mioitema6_qs = MIOItemA.objects.filter(mioitem__mio__belong_dept=dept6, mioitem__mio__type="do_in", + batch=batch, + mioitem__mio__submit_time__isnull=False) + if mioitema6_qs.exists(): + data["六车间生产入库_组合件_批次号"] = [] + if "六车间生产入库_日期" not in data: + data["六车间生产入库_日期"] = [] + if "六车间生产入库_count" not in data: + data["六车间生产入库_count"] = 0 + for item in mioitema6_qs: + data["六车间生产入库_日期"].append(item.mioitem.mio.inout_date) + data["六车间生产入库_count"] += item.rate * item.mioitem.count + data["六车间生产入库_组合件_批次号"].append(item.mioitem.batch) + data["六车间生产入库_组合件_批次号"] = list(set(data["六车间生产入库_组合件_批次号"])) + data["六车间生产入库_组合件_批次号"] = ";".join(data["六车间生产入库_组合件_批次号"]) + + if "六车间生产入库_日期" in data: + data["六车间生产入库_日期"] = list(set(data["六车间生产入库_日期"])) + data["六车间生产入库_日期"].sort() + data["六车间生产入库_小日期"] = max(data["六车间生产入库_日期"]).strftime("%Y-%m-%d") + data["六车间生产入库_大日期"] = min(data["六车间生产入库_日期"]).strftime("%Y-%m-%d") + data["六车间生产入库_日期"] = ";".join([item.strftime("%Y-%m-%d") for item in data["六车间生产入库_日期"]]) + # 成品检验数据 ftestwork_qs = FtestWork.objects.filter(batch=batch, type="prod") if ftestwork_qs.exists(): @@ -451,10 +470,29 @@ def main(batch: str, mgroup_obj): if item.mio.mio_user: data['销售发货_仓库执行人'].append(item.mio.mio_user) data['销售发货_count']+= item.count + + + # 销售发货的组合件信息 + mioitem_qs_assemb = MIOItem.objects.filter(mio__type="sale_out", mb__a_mb__batch=batch, mio__submit_time__isnull=False) + if mioitem_qs.exists(): + if "销售发货_日期" not in data: + data["销售发货_日期"] = [] + data['销售发货_仓库执行人'] = [] + data['销售发货_count'] = 0 + for item in mioitem_qs_assemb: + data["销售发货_日期"].append(item.mio.inout_date) + if item.mio.mio_user: + data['销售发货_仓库执行人'].append(item.mio.mio_user) + mba = MaterialBatchA.objects.get(batch=batch, mb=item.mb) + data['销售发货_count']+= item.count * mba.rate + + + if "销售发货_日期" in data: if getattr(data, "棒料成型_count_real", 0) > 0: data["七车间_批次发货合格率"] = round(data["销售发货_count"] * 100/ data["棒料成型_count_real"], 1) if getattr(data, "六车间领料_count", 0) > 0: data["六车间_批次发货合格率"] = round(data["销售发货_count"] * 100/ data["六车间领料_count"], 1) + data['销售发货_仓库执行人'] = list(set(data['销售发货_仓库执行人'])) data['销售发货_仓库执行人'] = ";".join([item.name for item in data['销售发货_仓库执行人']]) data["销售发货_日期"] = list(set(data["销售发货_日期"]))