feat: 物料导入模板及逻辑修改
This commit is contained in:
parent
739c4b0d65
commit
7f31ec8add
|
@ -51,8 +51,8 @@ def daoru_material(path: str):
|
||||||
'辅助材料': 40, '加工工具': 50, '辅助工装': 60, '办公用品': 70}
|
'辅助材料': 40, '加工工具': 50, '辅助工装': 60, '办公用品': 70}
|
||||||
from apps.utils.snowflake import idWorker
|
from apps.utils.snowflake import idWorker
|
||||||
from openpyxl import load_workbook
|
from openpyxl import load_workbook
|
||||||
wb = load_workbook(path)
|
wb = load_workbook(path, read_only=True)
|
||||||
sheet = wb['物料']
|
sheet = wb.active
|
||||||
process_l = Process.objects.all()
|
process_l = Process.objects.all()
|
||||||
process_d = {p.name: p for p in process_l}
|
process_d = {p.name: p for p in process_l}
|
||||||
i = 3
|
i = 3
|
||||||
|
@ -62,22 +62,24 @@ def daoru_material(path: str):
|
||||||
type_str = sheet[f'b{i}'].value.replace(' ', '')
|
type_str = sheet[f'b{i}'].value.replace(' ', '')
|
||||||
try:
|
try:
|
||||||
type = type_dict[type_str]
|
type = type_dict[type_str]
|
||||||
|
cate = sheet[f'c{i}'].value.replace(' ', '') if sheet[f'c{i}'].value else ""
|
||||||
number = str(sheet[f'a{i}'].value).replace(' ', '') if sheet[f'a{i}'].value else None
|
number = str(sheet[f'a{i}'].value).replace(' ', '') if sheet[f'a{i}'].value else None
|
||||||
if sheet[f'c{i}'].value:
|
if sheet[f'd{i}'].value:
|
||||||
name = str(sheet[f'c{i}'].value).replace(' ', '')
|
name = str(sheet[f'd{i}'].value).replace(' ', '')
|
||||||
else:
|
else:
|
||||||
raise ParseError(f'{i}行物料信息错误: 物料名称必填')
|
raise ParseError(f'{i}行物料信息错误: 物料名称必填')
|
||||||
specification = str(sheet[f'd{i}'].value).replace(
|
specification = str(sheet[f'e{i}'].value).replace(
|
||||||
'×', '*').replace(' ', '') if sheet[f'd{i}'].value else None
|
'×', '*').replace(' ', '') if sheet[f'e{i}'].value else None
|
||||||
model = str(sheet[f'e{i}'].value).replace(' ', '') if sheet[f'e{i}'].value else None
|
model = str(sheet[f'f{i}'].value).replace(' ', '') if sheet[f'f{i}'].value else None
|
||||||
unit = sheet[f'f{i}'].value.replace(' ', '')
|
unit = sheet[f'g{i}'].value.replace(' ', '')
|
||||||
count_safe = float(sheet[f'h{i}'].value) if sheet[f'h{i}'].value else None
|
count_safe = float(sheet[f'i{i}'].value) if sheet[f'i{i}'].value else None
|
||||||
unit_price = float(sheet[f'i{i}'].value) if sheet[f'i{i}'].value else None
|
unit_price = float(sheet[f'j{i}'].value) if sheet[f'j{i}'].value else None
|
||||||
|
bin_number_main = sheet[f'k{i}'].value.replace(' ', '') if sheet[f'k{i}'].value else None
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise ParseError(f'{i}行物料信息错误: {e}')
|
raise ParseError(f'{i}行物料信息错误: {e}')
|
||||||
if type in [20, 30]:
|
if type in [20, 30]:
|
||||||
try:
|
try:
|
||||||
process = process_d[sheet[f'g{i}'].value.replace(' ', '')]
|
process = process_d[sheet[f'h{i}'].value.replace(' ', '')]
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise ParseError(f'{i}行物料信息错误: {e}')
|
raise ParseError(f'{i}行物料信息错误: {e}')
|
||||||
try:
|
try:
|
||||||
|
@ -87,7 +89,7 @@ def daoru_material(path: str):
|
||||||
filters['process'] = process
|
filters['process'] = process
|
||||||
default = {'type': type, 'name': name, 'specification': specification,
|
default = {'type': type, 'name': name, 'specification': specification,
|
||||||
'model': model, 'unit': unit, 'number': number if number else 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}
|
'count_safe': count_safe, 'unit_price': unit_price, 'cate': cate, 'bin_number_main': bin_number_main}
|
||||||
material, is_created = Material.objects.get_or_create(
|
material, is_created = Material.objects.get_or_create(
|
||||||
**filters, defaults=default)
|
**filters, defaults=default)
|
||||||
if not is_created:
|
if not is_created:
|
||||||
|
|
Binary file not shown.
Loading…
Reference in New Issue