headhaul_document_common.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. NUMBER_FIELDS = (
  2. 'declaration_numbers',
  3. 'sys_bl_numbers',
  4. 'container_codes',
  5. 'order_numbers',
  6. 'clearance_numbers',
  7. 'customer_names',
  8. 'so_numbers',
  9. 'bl_numbers',
  10. 'trailer_numbers',
  11. 'truck_bol_numbers',
  12. 'provider_names',
  13. 'importer_names',
  14. )
  15. NUMBER_FIELD_LABELS = {
  16. 'declaration_numbers': '报关单号',
  17. 'sys_bl_numbers': '系统提单号',
  18. 'container_codes': '柜号',
  19. 'order_numbers': '订单号',
  20. 'clearance_numbers': '清关单号',
  21. 'customer_names': '客户',
  22. 'so_numbers': 'SO号',
  23. 'bl_numbers': '提单号',
  24. 'trailer_numbers': '拖车单',
  25. 'truck_bol_numbers': '卡车单号',
  26. 'provider_names': '供应商',
  27. 'importer_names': '进口商',
  28. }
  29. FILTER_TYPES = ('查询文档类型', '添加文档类型', '录入单号种类')
  30. UPLOAD_PATH = '/mcp/upload-headhaul-document'
  31. def number_list(values, field):
  32. if not isinstance(values, list) or not values:
  33. raise ValueError(field + ' is invalid')
  34. result = []
  35. for value in values:
  36. if not isinstance(value, str):
  37. raise ValueError(field + ' is invalid')
  38. value = value.strip()
  39. if not value or len(value) > 100:
  40. raise ValueError(field + ' is invalid')
  41. if value not in result:
  42. result.append(value)
  43. if len(result) > 200:
  44. raise ValueError('at most 200 numbers are allowed')
  45. return result
  46. def bounded_integer(value, field):
  47. if isinstance(value, bool) or not isinstance(value, int):
  48. raise ValueError(field + ' is invalid')
  49. if value < 1 or value > 100:
  50. raise ValueError(field + ' is invalid')
  51. return value
  52. def number_properties():
  53. properties = {}
  54. for field, label in NUMBER_FIELD_LABELS.items():
  55. properties[field] = {
  56. 'type': 'array',
  57. 'minItems': 1,
  58. 'maxItems': 200,
  59. 'items': {
  60. 'type': 'string',
  61. 'minLength': 1,
  62. 'maxLength': 100,
  63. 'pattern': '.*\\S.*',
  64. },
  65. 'description': (
  66. '{0}数组。仅当用户明确说{0}时使用;不得与其他号码种类混放。'
  67. .format(label)
  68. ),
  69. }
  70. return properties