budget.py 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. """
  2. 预算金额字段检查
  3. """
  4. class BudgetChecker(object):
  5. """
  6. 预算字段检查
  7. """
  8. def __init__(self):
  9. self.errors_tables = {
  10. "0101": {
  11. "name": "预算/中标金额不在:[0.7,1.3]",
  12. "parent_name": "金额错误",
  13. "parent_code": "01",
  14. "checkFn": self.check0101
  15. },
  16. "0102": {
  17. "name": "过大过小,不在[100,10亿]",
  18. "parent_name": "金额错误",
  19. "parent_code": "01",
  20. "checkFn": self.check0102
  21. },
  22. "0103": {
  23. "name": "预算小数点位数超过4位",
  24. "parent_name": "金额错误",
  25. "parent_code": "01",
  26. "checkFn": self.check0103
  27. },
  28. "0201": {
  29. "name": "预算<0",
  30. "parent_name": "金额错误",
  31. "parent_code": "01",
  32. "checkFn": self.check0201
  33. }
  34. }
  35. @staticmethod
  36. def check0101(budget: float, bidamount: float) -> bool:
  37. """
  38. 预算和中标金额的比例
  39. :param budget:
  40. :param amount:
  41. :return:返回true 代表异常
  42. """
  43. if budget and bidamount:
  44. if 0.7 < budget / bidamount < 1.3:
  45. return False
  46. else:
  47. return True
  48. else:
  49. # 两者中有一方为空不判断
  50. return False
  51. @staticmethod
  52. def check0102(budget: float) -> bool:
  53. """
  54. 中标金额过大过小[100,10亿]
  55. :param price:
  56. :return: 返回true 代表异常
  57. """
  58. if 100 < budget < 1000000000:
  59. return False
  60. return True
  61. @staticmethod
  62. def check0103(budget: float) -> bool :
  63. """
  64. 预算小数点位数超过4位,视为异常
  65. :param price:
  66. :return: 返回true 代表异常
  67. """
  68. # 将数字转换为字符串
  69. number_str = str(budget)
  70. # 检查是否有小数点
  71. if '.' in number_str:
  72. # 分割整数部分和小数部分
  73. integer_part, decimal_part = number_str.split('.')
  74. # 返回小数部分的长度
  75. length= len(decimal_part)
  76. else:
  77. length = 0
  78. if length > 4 :
  79. return True
  80. @staticmethod
  81. def check0201(budget: float) -> bool :
  82. """
  83. 预算<0,视为异常
  84. :return: 返回true 代表异常
  85. """
  86. if budget < 0:
  87. return True
  88. return False