From a9acf6d1877093038fc375753e83b257ee80593c Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 14 Aug 2024 17:42:27 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=89=A9=E6=96=99=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E5=A2=9E=E5=8A=A0=E7=BC=96=E5=8F=B7=E5=88=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/mtm/services.py | 27 +++++++++++++++------------ media/default/template/material.xlsx | Bin 9748 -> 9780 bytes 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/apps/mtm/services.py b/apps/mtm/services.py index 424f326e..3813a6ad 100644 --- a/apps/mtm/services.py +++ b/apps/mtm/services.py @@ -63,26 +63,29 @@ def daoru_material(path: str): from apps.utils.snowflake import idWorker from openpyxl import load_workbook wb = load_workbook(path) - sheet = wb.get_sheet_by_name('物料') + sheet = wb['物料'] process_l = Process.objects.all() process_d = {p.name: p for p in process_l} i = 3 - while sheet[f'a{i}'].value is not None: - type_str = sheet[f'a{i}'].value.replace(' ', '') + if sheet['a2'].value != '物料编号': + raise ParseError('列错误导入失败') + while sheet[f'b{i}'].value is not None: + type_str = sheet[f'b{i}'].value.replace(' ', '') try: type = type_dict[type_str] - name = sheet[f'b{i}'].value.replace(' ', '') - specification = sheet[f'c{i}'].value.replace( + number = sheet[f'a{i}'].value.replace(' ', '') + name = sheet[f'c{i}'].value.replace(' ', '') + specification = sheet[f'd{i}'].value.replace( '×', '*').replace(' ', '') - model = sheet[f'd{i}'].value.replace(' ', '') - unit = sheet[f'e{i}'].value.replace(' ', '') - count_safe = sheet[f'g{i}'].value - unit_price = sheet[f'h{i}'].value + model = sheet[f'e{i}'].value.replace(' ', '') + unit = sheet[f'f{i}'].value.replace(' ', '') + count_safe = sheet[f'h{i}'].value + unit_price = sheet[f'i{i}'].value except Exception as e: raise ParseError(f'{i}行物料信息错误: {str(e)}') if type in [20, 30]: try: - process = process_d[sheet[f'f{i}'].value.replace(' ', '')] + process = process_d[sheet[f'g{i}'].value.replace(' ', '')] except Exception as e: raise ParseError(f'{i}行物料信息错误: {str(e)}') try: @@ -91,7 +94,7 @@ def daoru_material(path: str): if type in [20, 30]: filters['process'] = process default = {'type': type, 'name': name, 'specification': specification, - 'model': model, 'unit': unit, 'number': f'm{type}_{ranstr(6)}', 'id': idWorker.get_id(), + 'model': model, 'unit': unit, 'number': number if number else f'm{type}_{ranstr(6)}', 'id': idWorker.get_id(), 'count_safe': count_safe, 'unit_price': unit_price} material, is_created = Material.objects.get_or_create( **filters, defaults=default) @@ -101,7 +104,7 @@ def daoru_material(path: str): except Exception as e: raise ParseError(f'{i}行物料有误, 导入失败--{e}') i = i + 1 - print(type, name, specification, model, unit, '导入成功') + print(number, type, name, specification, model, unit, '导入成功') def mgroup_run_change(mgroup: Mgroup, new_run: bool, last_timex: datetime): diff --git a/media/default/template/material.xlsx b/media/default/template/material.xlsx index 19a678a33739900ffdc7e4ec7e9b5b4d8f640c1d..db0a83ff482c965703913cfb8c8b03832155e0ce 100644 GIT binary patch delta 3285 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 delta 3258 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