generate_location group copy.py 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. # generate_locations.py
  2. import os
  3. import django
  4. import sys
  5. # fun:get_pallet_count_by_batch: 根据托盘码查询批次下托盘总数
  6. # fun:get_location_type: 根据托盘数目获取库位类型
  7. # fun:updata_location_container_link: 更新库位和托盘的关联关系
  8. # fun:get_batch_status: 获取批次状态
  9. # fun:get_batch: 获取批次
  10. # fun:get_location_list_remainder: 获取可用库位的c_number列表
  11. # fun:get_min_list_index: 获取最小的库位
  12. # fun:get_location_by_type_remainder: 根据库位类型获取库位
  13. # fun:get_location_by_type: 第一次入库,根据库位类型获取库位
  14. # fun:get_location_by_status: 根据库位状态获取库位
  15. def setup_django():
  16. # 使用原始字符串处理Windows路径
  17. project_path = "D:/Document/code/vue/greater_wms"
  18. sys.path.append(project_path)
  19. # 根据实际目录名设置(注意下划线)
  20. os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'greaterwms.settings')
  21. django.setup()
  22. def main():
  23. try:
  24. # 从正确的应用导入模型
  25. from bin.views import LocationAllocation
  26. container_code = "12345"
  27. print(f"开始生成库位,托盘编码:{container_code}")
  28. # 调用生成方法
  29. # 修改调用部分的代码
  30. allocator = LocationAllocation() # 创建实例
  31. number=allocator.get_pallet_count_by_batch(container_code) # 通过实例调用)
  32. if number is None:
  33. print("❌ 该批次下无托盘,请检查托盘编码")
  34. return
  35. print(f"该批次下托盘总数:{number}")
  36. location_type = allocator.get_location_type(number) # 获取库位类型
  37. if not location_type:
  38. print("❌ 库位类型获取失败,请检查托盘数量")
  39. return
  40. print(f"库位类型:{location_type}")
  41. # 调用生成库位方法
  42. batch_status = allocator.get_batch_status(container_code) # 获取批次状态
  43. if not batch_status:
  44. print("❌ 批次状态获取失败,请检查批次号")
  45. return
  46. print(f"批次状态:{batch_status}")
  47. batch = allocator.get_batch(container_code)
  48. if not batch:
  49. print("❌ 批次获取失败,请检查托盘编码")
  50. return
  51. print(f"批次信息:{batch}")
  52. location_list_cnumber = allocator.get_location_by_status(container_code, 'in2', 1) # 获取库位列表
  53. if not location_list_cnumber:
  54. print("❌ 通用库位获取失败,请检查托盘编码")
  55. return
  56. print(f"库位列表:{location_list_cnumber}")
  57. updata_location_container_link = allocator.updata_location_container_link(location_list_cnumber.location_code, container_code) # 更新库位和托盘的关联关系
  58. if not updata_location_container_link:
  59. print("❌ 库位和托盘的关联关系更新失败,请检查托盘编码")
  60. return
  61. print(f"库位和托盘的关联关系更新成功!")
  62. location_list = allocator.get_location_by_type(location_type, 'in2', 1) # 获取库位列表
  63. if not location_list:
  64. print("❌ 第一次库位获取失败,请检查库位类型")
  65. return
  66. print(f"库位列表:{location_list}")
  67. location_list_cnumber = allocator.get_location_by_type_remainder(batch, 1) # 获取库位列表
  68. if not location_list_cnumber:
  69. print("❌ 剩余库位获取失败,请检查托盘编码")
  70. return
  71. print(f"库位列表:{location_list_cnumber}")
  72. print("✅ 方法生成成功!")
  73. except Exception as e:
  74. print(f"❌ 生成失败:{str(e)}")
  75. import traceback
  76. traceback.print_exc()
  77. if __name__ == "__main__":
  78. setup_django()
  79. main()