sys_priceinfo_conf_mapper.py 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. # -*- coding: utf-8 -*-
  2. # @Author : YY
  3. # @FileName: sys_price_info_conf_mapper.py
  4. # @Time : 2025-12-22 04:49:51
  5. from typing import List
  6. from datetime import datetime
  7. from flask import g
  8. from sqlalchemy import select, update, delete, func
  9. from ruoyi_admin.ext import db
  10. from ruoyi_common.domain.entity import SysPriceConf
  11. from ruoyi_system.domain.po import SysPriceConfPo
  12. class SysPriceInfoConfMapper:
  13. """价目配置表Mapper"""
  14. @staticmethod
  15. def select_priceinfo_conf_list(sys: SysPriceConf) -> List[SysPriceConf]:
  16. """
  17. 查询价目配置表列表
  18. Args:
  19. sys (sys_price_info_conf): 价目配置表对象
  20. Returns:
  21. List[sys_price_info_conf]: 价目配置表列表
  22. """
  23. try:
  24. # 构建查询条件
  25. stmt = select(SysPriceConfPo)
  26. if sys.conf_id is not None:
  27. stmt = stmt.where(SysPriceConfPo.conf_id == sys.conf_id)
  28. if sys.module_index is not None:
  29. stmt = stmt.where(SysPriceConfPo.module_index == sys.module_index)
  30. if sys.category is not None:
  31. stmt = stmt.where(SysPriceConfPo.category == sys.category)
  32. if sys.attributes is not None:
  33. stmt = stmt.where(SysPriceConfPo.attributes == sys.attributes)
  34. if "criterian_meta" in g and g.criterian_meta.page:
  35. g.criterian_meta.page.stmt = stmt
  36. result = db.session.execute(stmt).scalars().all()
  37. return [SysPriceConf.model_validate(item) for item in result] if result else []
  38. except Exception as e:
  39. print(f"查询价目配置表列表出错: {e}")
  40. return []
  41. @staticmethod
  42. def select_sys_price_info_conf_by_id(conf_id: int) -> SysPriceConf:
  43. """
  44. 根据ID查询价目配置表
  45. Args:
  46. conf_id (int): conf_id
  47. Returns:
  48. sys_price_info_conf: 价目配置表对象
  49. """
  50. try:
  51. result = db.session.get(SysPriceConfPo, conf_id)
  52. return SysPriceConf.model_validate(result) if result else None
  53. except Exception as e:
  54. print(f"根据ID查询价目配置表出错: {e}")
  55. return None
  56. @staticmethod
  57. def insert_sys_price_info_conf(sys: SysPriceConf) -> int:
  58. """
  59. 新增价目配置表
  60. Args:
  61. sys (sys_price_info_conf): 价目配置表对象
  62. Returns:
  63. int: 插入的记录数
  64. """
  65. try:
  66. now = datetime.now()
  67. new_po = SysPriceConfPo()
  68. # 如果 conf_id 为空,需要生成新的主键值
  69. if sys.conf_id is None:
  70. # 查询当前最大 conf_id 值
  71. max_id_stmt = select(func.max(SysPriceConfPo.conf_id))
  72. max_id_result = db.session.execute(max_id_stmt).scalar()
  73. # 如果表中没有数据,从1开始;否则最大值+1
  74. new_po.conf_id = (max_id_result + 1) if max_id_result is not None else 1
  75. else:
  76. new_po.conf_id = sys.conf_id
  77. new_po.module_index = sys.module_index
  78. new_po.category = sys.category
  79. new_po.attributes = sys.attributes
  80. db.session.add(new_po)
  81. db.session.commit()
  82. sys.conf_id = new_po.conf_id
  83. return 1
  84. except Exception as e:
  85. db.session.rollback()
  86. print(f"新增价目配置表出错: {e}")
  87. return 0
  88. @staticmethod
  89. def update_sys_price_info_conf(sys: SysPriceConf) -> int:
  90. """
  91. 修改价目配置表
  92. Args:
  93. sys (sys_price_info_conf): 价目配置表对象
  94. Returns:
  95. int: 更新的记录数
  96. """
  97. try:
  98. existing = db.session.get(SysPriceConfPo, sys.conf_id)
  99. if not existing:
  100. return 0
  101. now = datetime.now()
  102. # 主键不参与更新
  103. existing.module_index = sys.module_index
  104. existing.category = sys.category
  105. existing.attributes = sys.attributes
  106. db.session.commit()
  107. return 1
  108. except Exception as e:
  109. db.session.rollback()
  110. print(f"修改价目配置表出错: {e}")
  111. return 0
  112. @staticmethod
  113. def delete_sys_price_info_conf_by_ids(ids: List[int]) -> int:
  114. """
  115. 批量删除价目配置表
  116. Args:
  117. ids (List[int]): ID列表
  118. Returns:
  119. int: 删除的记录数
  120. """
  121. try:
  122. stmt = delete(SysPriceConfPo).where(SysPriceConfPo.conf_id.in_(ids))
  123. result = db.session.execute(stmt)
  124. db.session.commit()
  125. return result.rowcount
  126. except Exception as e:
  127. db.session.rollback()
  128. print(f"批量删除价目配置表出错: {e}")
  129. return 0