service.py.vm 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  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 ruoyi_common.exception import ServiceException
  7. from ruoyi_common.utils.base import LogUtil
  8. from {{ get_import_path(table.package_name, table.module_name, 'domain') }} import {{ table.class_name }}
  9. from {{ get_import_path(table.package_name, table.module_name, 'mapper') }}.{{ underscore(table.class_name) }}_mapper import {{ underscore(table.class_name) }}_mapper
  10. class {{ underscore(table.class_name) }}_service:
  11. """{{ table.function_name }}服务类"""
  12. def select_{{ underscore(table.class_name) }}_list(self, {{ underscore(table.business_name) }}: {{ table.class_name }}) -> Tuple[List[{{ table.class_name }}], int]:
  13. """
  14. 查询{{ table.function_name }}列表
  15. Args:
  16. {{ underscore(table.business_name) }} ({{ table.class_name }}): {{ table.function_name }}对象
  17. Returns:
  18. Tuple[List[{{ table.class_name }}], int]: {{ table.function_name }}列表和总数
  19. """
  20. list_result = {{ underscore(table.class_name) }}_mapper.select_{{ underscore(table.class_name) }}_list({{ underscore(table.business_name) }})
  21. count_result = {{ underscore(table.class_name) }}_mapper.select_{{ underscore(table.class_name) }}_count({{ underscore(table.business_name) }})
  22. return list_result, count_result
  23. {% if table.pk_column %}
  24. def select_{{ underscore(table.class_name) }}_by_id(self, {{ underscore(table.pk_column.java_field) }}: int) -> {{ table.class_name }}:
  25. """
  26. 根据ID查询{{ table.function_name }}
  27. Args:
  28. {{ underscore(table.pk_column.java_field) }} (int): {{ table.pk_column.column_comment }}
  29. Returns:
  30. {{ table.class_name }}: {{ table.function_name }}对象
  31. """
  32. return {{ underscore(table.class_name) }}_mapper.select_{{ underscore(table.class_name) }}_by_id({{ underscore(table.pk_column.java_field) }})
  33. {% endif %}
  34. def insert_{{ underscore(table.class_name) }}(self, {{ underscore(table.business_name) }}: {{ table.class_name }}) -> int:
  35. """
  36. 新增{{ table.function_name }}
  37. Args:
  38. {{ underscore(table.business_name) }} ({{ table.class_name }}): {{ table.function_name }}对象
  39. Returns:
  40. int: 插入的记录数
  41. """
  42. return {{ underscore(table.class_name) }}_mapper.insert_{{ underscore(table.class_name) }}({{ underscore(table.business_name) }})
  43. {% if table.pk_column %}
  44. def update_{{ underscore(table.class_name) }}(self, {{ underscore(table.business_name) }}: {{ table.class_name }}) -> int:
  45. """
  46. 修改{{ table.function_name }}
  47. Args:
  48. {{ underscore(table.business_name) }} ({{ table.class_name }}): {{ table.function_name }}对象
  49. Returns:
  50. int: 更新的记录数
  51. """
  52. return {{ underscore(table.class_name) }}_mapper.update_{{ underscore(table.class_name) }}({{ underscore(table.business_name) }})
  53. {% endif %}
  54. {% if table.pk_column %}
  55. def delete_{{ underscore(table.class_name) }}_by_ids(self, ids: List[int]) -> int:
  56. """
  57. 批量删除{{ table.function_name }}
  58. Args:
  59. ids (List[int]): ID列表
  60. Returns:
  61. int: 删除的记录数
  62. """
  63. return {{ underscore(table.class_name) }}_mapper.delete_{{ underscore(table.class_name) }}_by_ids(ids)
  64. {% endif %}
  65. def import_{{ underscore(table.class_name) }}(self, {{ underscore(table.business_name) }}_list: List[{{ table.class_name }}], is_update: bool = False) -> str:
  66. """
  67. 导入{{ table.function_name }}数据
  68. Args:
  69. {{ underscore(table.business_name) }}_list (List[{{ table.class_name }}]): {{ table.function_name }}列表
  70. is_update (bool): 是否更新已存在的数据
  71. Returns:
  72. str: 导入结果消息
  73. """
  74. if not {{ underscore(table.business_name) }}_list:
  75. raise ServiceException("导入{{ table.function_name }}数据不能为空")
  76. success_count = 0
  77. fail_count = 0
  78. success_msg = ""
  79. fail_msg = ""
  80. for {{ underscore(table.business_name) }} in {{ underscore(table.business_name) }}_list:
  81. try:
  82. display_value = {{ underscore(table.business_name) }}
  83. {% if table.pk_column %}
  84. display_value = getattr({{ underscore(table.business_name) }}, "{{ underscore(table.pk_column.java_field) }}", display_value)
  85. existing = None
  86. if {{ underscore(table.business_name) }}.{{ underscore(table.pk_column.java_field) }} is not None:
  87. existing = {{ underscore(table.class_name) }}_mapper.select_{{ underscore(table.class_name) }}_by_id({{ underscore(table.business_name) }}.{{ underscore(table.pk_column.java_field) }})
  88. if existing:
  89. if is_update:
  90. result = {{ underscore(table.class_name) }}_mapper.update_{{ underscore(table.class_name) }}({{ underscore(table.business_name) }})
  91. else:
  92. fail_count += 1
  93. fail_msg += f"<br/> 第{fail_count}条数据,已存在:{display_value}"
  94. continue
  95. else:
  96. result = {{ underscore(table.class_name) }}_mapper.insert_{{ underscore(table.class_name) }}({{ underscore(table.business_name) }})
  97. {% else %}
  98. display_value = str(display_value)
  99. result = {{ underscore(table.class_name) }}_mapper.insert_{{ underscore(table.class_name) }}({{ underscore(table.business_name) }})
  100. {% endif %}
  101. if result > 0:
  102. success_count += 1
  103. success_msg += f"<br/> 第{success_count}条数据,操作成功:{display_value}"
  104. else:
  105. fail_count += 1
  106. fail_msg += f"<br/> 第{fail_count}条数据,操作失败:{display_value}"
  107. except Exception as e:
  108. fail_count += 1
  109. fail_msg += f"<br/> 第{fail_count}条数据,导入失败,原因:{e.__class__.__name__}"
  110. LogUtil.logger.error(f"导入{{ table.function_name }}失败,原因:{e}")
  111. if fail_count > 0:
  112. if success_msg:
  113. fail_msg = f"导入成功{success_count}条,失败{fail_count}条。{success_msg}<br/>" + fail_msg
  114. else:
  115. fail_msg = f"导入成功{success_count}条,失败{fail_count}条。{fail_msg}"
  116. raise ServiceException(fail_msg)
  117. success_msg = f"恭喜您,数据已全部导入成功!共 {success_count} 条,数据如下:" + success_msg
  118. return success_msg