feat: 导入出入库明细
This commit is contained in:
parent
7f619a36b0
commit
ee9fce675d
|
@ -1,6 +1,6 @@
|
|||
from rest_framework.exceptions import ParseError
|
||||
from apps.mtm.models import Process, Material
|
||||
from apps.inm.models import WareHouse, MaterialBatch, MIOItem, MIOItemw
|
||||
from apps.inm.models import WareHouse, MaterialBatch, MIOItem, MIOItemw, MIO
|
||||
from apps.utils.tools import ranstr
|
||||
from apps.mtm.services_2 import cal_material_count
|
||||
|
||||
|
@ -123,4 +123,35 @@ def daoru_mioitem_test(path:str, mioitem:MIOItem):
|
|||
ftestitems.append(FtestItem(ftest=ftest, testitem=t_list[6], test_val_json=sheet[f"k{i}"].value, test_user=test_user, id=idWorker.get_id()))
|
||||
FtestItem.objects.bulk_create(ftestitems)
|
||||
else:
|
||||
break
|
||||
break
|
||||
|
||||
|
||||
def daoru_mioitems(path:str, mio:MIO):
|
||||
from apps.utils.snowflake import idWorker
|
||||
from openpyxl import load_workbook
|
||||
|
||||
wb = load_workbook(path, data_only=True)
|
||||
if "Sheet1" in wb.sheetnames: # 检查是否存在
|
||||
sheet = wb["Sheet1"] # 获取工作表
|
||||
else:
|
||||
raise ParseError("未找到Sheet1")
|
||||
|
||||
mioitems = []
|
||||
ind = 2
|
||||
while sheet[f"b{ind}"].value:
|
||||
batch = sheet[f"b{ind}"].value
|
||||
material_number = sheet[f"a{ind}"].value
|
||||
try:
|
||||
material = Material.objects.get(number=material_number)
|
||||
except Exception as e:
|
||||
raise ParseError(f"未找到物料:{material_number} {e}")
|
||||
count = sheet[f"c{ind}"].value
|
||||
warehouse_name = sheet[f"d{ind}"].value
|
||||
try:
|
||||
warehouse = WareHouse.objects.get(name=warehouse_name)
|
||||
except Exception as e:
|
||||
raise ParseError(f"未找到仓库:{warehouse_name} {e}")
|
||||
mioitems.append(MIOItem(mio=mio, warehouse=warehouse, material=material, batch=batch, count=count, id=idWorker.get_id()))
|
||||
ind = ind + 1
|
||||
|
||||
MIOItem.objects.bulk_create(mioitems)
|
|
@ -18,7 +18,7 @@ from apps.inm.serializers import (
|
|||
from apps.inm.serializers2 import MIOItemwCreateUpdateSerializer
|
||||
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
|
||||
from apps.inm.services import InmService
|
||||
from apps.inm.services_daoru import daoru_mb, daoru_mioitem_test
|
||||
from apps.inm.services_daoru import daoru_mb, daoru_mioitem_test, daoru_mioitems as d_mioitems
|
||||
from apps.utils.mixins import (BulkCreateModelMixin, BulkDestroyModelMixin, BulkUpdateModelMixin,
|
||||
CustomListModelMixin)
|
||||
from apps.utils.permission import has_perm
|
||||
|
@ -262,6 +262,14 @@ class MIOViewSet(CustomModelViewSet):
|
|||
mioitem.save(update_fields=['pack_index', 'update_time'])
|
||||
return Response()
|
||||
|
||||
@action(methods=['post'], detail=True, perms_map={'post': 'mio.update'}, serializer_class=serializers.Serializer)
|
||||
def daoru_mioitems(self, request, *args, **kwargs):
|
||||
"""导入明细
|
||||
|
||||
导入明细
|
||||
"""
|
||||
d_mioitems(settings.BASE_DIR + request.data.get('path', ''))
|
||||
return Response()
|
||||
class PackViewSet(CustomListModelMixin, BulkCreateModelMixin, BulkDestroyModelMixin, CustomGenericViewSet):
|
||||
"""
|
||||
list: 装箱记录
|
||||
|
|
Binary file not shown.
Loading…
Reference in New Issue