| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 | from django.db import transactionimport sysimport os# 将当前脚本所在目录(bin)添加到 Python 路径current_dir = os.path.dirname(os.path.abspath(__file__))sys.path.append(current_dir)from .services import AllocationServicefrom .exceptions import AllocationErrorfrom .models import *class LocationAllocation:    """    库位分配     functions:        process(container_code, start_point): 处理托盘分配            params: container_code: 托盘编号            params: start_point: 起始库位            return: dict        release(location_code): 释放库位            params: location_code: 库位编号            return: bool    """    def __init__(self):        self.service = AllocationService    def process(self, container_code, start_point='203'):        try:            with transaction.atomic():                return self.service.allocate(container_code, start_point)        except Exception as e:            raise AllocationError(f"分配失败: {str(e)}")    def release(self, location_code):        try:            location = LocationModel.objects.get(location_code=location_code)            link = LocationContainerLink.objects.get(                location=location,                 is_active=True            )            link.is_active = False            link.save()            return True        except Exception as e:            raise AllocationError(f"释放失败: {str(e)}")
 |