service.py.vm 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. # -*- coding: utf-8 -*-
  2. # @Author : {{ table.function_author }}
  3. # @FileName: {{ underscore(table.class_name) }}_service.py
  4. # @Time : {{ datetime }}
  5. from typing import List, Tuple
  6. from {{ get_import_path(table.package_name, table.module_name, 'domain') }} import {{ table.class_name }}
  7. from {{ get_import_path(table.package_name, table.module_name, 'mapper') }}.{{ underscore(table.class_name) }}_mapper import {{ table.class_name }}Mapper
  8. class {{ table.class_name }}Service:
  9. """{{ table.function_name }}服务类"""
  10. def select_{{ table.business_name }}_list(self, {{ table.business_name }}: {{ table.class_name }}) -> Tuple[List[{{ table.class_name }}], int]:
  11. """
  12. 查询{{ table.function_name }}列表
  13. Args:
  14. {{ table.business_name }} ({{ table.class_name }}): {{ table.function_name }}对象
  15. Returns:
  16. Tuple[List[{{ table.class_name }}], int]: {{ table.function_name }}列表和总数
  17. """
  18. list_result = {{ table.class_name }}Mapper.select_list({{ table.business_name }})
  19. count_result = {{ table.class_name }}Mapper.select_count({{ table.business_name }})
  20. return list_result, count_result
  21. {% if table.pk_column %}
  22. def select_{{ table.business_name }}_by_id(self, {{ underscore(table.pk_column.java_field) }}: int) -> {{ table.class_name }}:
  23. """
  24. 根据ID查询{{ table.function_name }}
  25. Args:
  26. {{ underscore(table.pk_column.java_field) }} (int): {{ table.pk_column.column_comment }}
  27. Returns:
  28. {{ table.class_name }}: {{ table.function_name }}对象
  29. """
  30. return {{ table.class_name }}Mapper.select_by_id({{ underscore(table.pk_column.java_field) }})
  31. {% endif %}
  32. def insert_{{ table.business_name }}(self, {{ table.business_name }}: {{ table.class_name }}) -> int:
  33. """
  34. 新增{{ table.function_name }}
  35. Args:
  36. {{ table.business_name }} ({{ table.class_name }}): {{ table.function_name }}对象
  37. Returns:
  38. int: 插入的记录数
  39. """
  40. return {{ table.class_name }}Mapper.insert({{ table.business_name }})
  41. {% if table.pk_column %}
  42. def update_{{ table.business_name }}(self, {{ table.business_name }}: {{ table.class_name }}) -> int:
  43. """
  44. 修改{{ table.function_name }}
  45. Args:
  46. {{ table.business_name }} ({{ table.class_name }}): {{ table.function_name }}对象
  47. Returns:
  48. int: 更新的记录数
  49. """
  50. return {{ table.class_name }}Mapper.update({{ table.business_name }})
  51. {% endif %}
  52. {% if table.pk_column %}
  53. def delete_{{ table.business_name }}_by_ids(self, ids: List[int]) -> int:
  54. """
  55. 批量删除{{ table.function_name }}
  56. Args:
  57. ids (List[int]): ID列表
  58. Returns:
  59. int: 删除的记录数
  60. """
  61. return {{ table.class_name }}Mapper.delete_by_ids(ids)
  62. {% endif %}
  63. def import_{{ table.business_name }}(self, {{ table.business_name }}_list: List[{{ table.class_name }}], update_support: bool = False) -> str:
  64. """
  65. 导入{{ table.function_name }}数据
  66. Args:
  67. {{ table.business_name }}_list (List[{{ table.class_name }}]): {{ table.function_name }}列表
  68. update_support (bool): 是否更新已存在的数据
  69. Returns:
  70. str: 导入结果消息
  71. """
  72. if not {{ table.business_name }}_list:
  73. raise Exception("导入{{ table.function_name }}数据不能为空")
  74. success_count = 0
  75. failure_count = 0
  76. failure_msg = []
  77. for index, {{ table.business_name }} in enumerate({{ table.business_name }}_list):
  78. try:
  79. {% if table.pk_column %}
  80. # 检查是否已存在
  81. existing = {{ table.class_name }}Mapper.select_by_id({{ table.business_name }}.{{ underscore(table.pk_column.java_field) }})
  82. if existing:
  83. if update_support:
  84. # 更新数据
  85. result = {{ table.class_name }}Mapper.update({{ table.business_name }})
  86. if result > 0:
  87. success_count += 1
  88. else:
  89. failure_count += 1
  90. failure_msg.append(f"第{index + 2}行更新失败")
  91. else:
  92. failure_count += 1
  93. failure_msg.append(f"第{index + 2}行数据已存在")
  94. else:
  95. # 新增数据
  96. result = {{ table.class_name }}Mapper.insert({{ table.business_name }})
  97. if result > 0:
  98. success_count += 1
  99. else:
  100. failure_count += 1
  101. failure_msg.append(f"第{index + 2}行导入失败")
  102. {% else %}
  103. # 没有主键,直接插入
  104. result = {{ table.class_name }}Mapper.insert({{ table.business_name }})
  105. if result > 0:
  106. success_count += 1
  107. else:
  108. failure_count += 1
  109. failure_msg.append(f"第{index + 2}行导入失败")
  110. {% endif %}
  111. except Exception as e:
  112. failure_count += 1
  113. failure_msg.append(f"第{index + 2}行导入失败: {str(e)}")
  114. if failure_count == 0:
  115. return f'成功导入{success_count}条数据'
  116. else:
  117. error_msg = f'成功导入{success_count}条,失败{failure_count}条'
  118. if failure_msg:
  119. error_msg += f'。失败原因:{"; ".join(failure_msg[:5])}'
  120. raise Exception(error_msg)