feat: 导入出入库明细
This commit is contained in:
parent
7f619a36b0
commit
ee9fce675d
|
@ -1,6 +1,6 @@
|
||||||
from rest_framework.exceptions import ParseError
|
from rest_framework.exceptions import ParseError
|
||||||
from apps.mtm.models import Process, Material
|
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.utils.tools import ranstr
|
||||||
from apps.mtm.services_2 import cal_material_count
|
from apps.mtm.services_2 import cal_material_count
|
||||||
|
|
||||||
|
@ -124,3 +124,34 @@ def daoru_mioitem_test(path:str, mioitem:MIOItem):
|
||||||
FtestItem.objects.bulk_create(ftestitems)
|
FtestItem.objects.bulk_create(ftestitems)
|
||||||
else:
|
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.inm.serializers2 import MIOItemwCreateUpdateSerializer
|
||||||
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
|
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
|
||||||
from apps.inm.services import InmService
|
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,
|
from apps.utils.mixins import (BulkCreateModelMixin, BulkDestroyModelMixin, BulkUpdateModelMixin,
|
||||||
CustomListModelMixin)
|
CustomListModelMixin)
|
||||||
from apps.utils.permission import has_perm
|
from apps.utils.permission import has_perm
|
||||||
|
@ -262,6 +262,14 @@ class MIOViewSet(CustomModelViewSet):
|
||||||
mioitem.save(update_fields=['pack_index', 'update_time'])
|
mioitem.save(update_fields=['pack_index', 'update_time'])
|
||||||
return Response()
|
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):
|
class PackViewSet(CustomListModelMixin, BulkCreateModelMixin, BulkDestroyModelMixin, CustomGenericViewSet):
|
||||||
"""
|
"""
|
||||||
list: 装箱记录
|
list: 装箱记录
|
||||||
|
|
Binary file not shown.
Loading…
Reference in New Issue