inbound_task.py 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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. from bin.views import LocationAllocation
  24. # code =["12346", "12345", "1", "2", "7"]
  25. code =["12346", "12347"]
  26. for container_code in code:
  27. # container_code = "12346"
  28. print(f"开始生成库位,托盘编码:{container_code}")
  29. allocator = LocationAllocation() # 创建实例
  30. location_list_cnumber = allocator.get_location_by_status(container_code, 'in1') # 获取库位列表
  31. if not location_list_cnumber:
  32. print("❌ 通用库位获取失败,请检查托盘编码")
  33. return
  34. print(f"[1]库位:{location_list_cnumber}")
  35. update_location_status = allocator.update_location_status(location_list_cnumber.location_code, 'reserverd') # 更新库位状态
  36. if not update_location_status:
  37. print("❌ 库位状态更新失败,请检查托盘编码")
  38. return
  39. print(f"[2]发送任务,库位状态更新成功!")
  40. update_location_group_status = allocator.update_location_group_status(location_list_cnumber.location_code) # 更新库位组状态
  41. if not update_location_group_status:
  42. print("❌ 库位组状态更新失败,请检查托盘编码")
  43. return
  44. print(f"[3]库位组状态更新成功!")
  45. update_batch_status = allocator.update_batch_status(container_code, '2') # 更新批次状态
  46. if not update_batch_status:
  47. print("❌ 批次状态更新失败,请检查批次号")
  48. return
  49. print(f"[4]批次状态更新成功!")
  50. update_location_group_batch = allocator.update_location_group_batch(location_list_cnumber, container_code) # 更新库位组的批次
  51. if not update_location_group_batch:
  52. print("❌ 库位组批次更新失败,请检查托盘编码")
  53. return
  54. print(f"[5]库位组批次更新成功!")
  55. update_location_status = allocator.update_location_status(location_list_cnumber.location_code, 'occupied') # 更新库位状态
  56. if not update_location_status:
  57. print("❌ 库位状态更新失败,请检查托盘编码")
  58. return
  59. print(f"[6]WCS到位,库位状态更新成功!")
  60. update_location_container_link = allocator.update_location_container_link(location_list_cnumber.location_code, container_code) # 更新库位和托盘的关联关系
  61. if not update_location_container_link:
  62. print("❌ 库位和托盘的关联关系更新失败,请检查托盘编码")
  63. return
  64. print(f"[7]库位和托盘的关联关系更新成功!")
  65. print("✅ 方法生成成功!")
  66. if __name__ == "__main__":
  67. setup_django()
  68. main()