trans_conf_service.py 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. # -*- coding: utf-8 -*-
  2. # @Time : 2025/1/9
  3. # @Author : 魏志亮
  4. from datetime import datetime
  5. from service.common_connect import trans
  6. from utils.log.trans_log import info
  7. def update_timeout_trans_data():
  8. sql = """
  9. UPDATE data_transfer
  10. SET trans_sys_status = 2,err_info='运行超时失败',transfer_status=2
  11. WHERE
  12. TIMESTAMPDIFF(HOUR, transfer_start_time, NOW()) > 24
  13. AND trans_sys_status = 0
  14. """
  15. trans.execute(sql)
  16. def update_trans_status_running(id, save_db=True):
  17. if save_db:
  18. exec_sql = """
  19. update data_transfer set transfer_status = 0,trans_sys_status = 0 ,transfer_start_time = now(),err_info='',
  20. engine_count =0,time_granularity=0,transfer_finish_time=null,transfer_progress=0,
  21. data_min_time= null,data_max_time= null,transfer_data_count=null
  22. where id = %s
  23. """
  24. trans.execute(exec_sql, id)
  25. def update_archive_success(id, archive_path, save_db=True):
  26. if save_db:
  27. exec_sql = """
  28. update data_transfer set transfer_progress=70,archive_path = %s
  29. where id = %s
  30. """
  31. trans.execute(exec_sql, (archive_path, id))
  32. def update_trans_status_error(id, message="", save_db=True):
  33. if save_db:
  34. exec_sql = """
  35. update data_transfer set transfer_status = 2,trans_sys_status=2 ,err_info= %s,transfer_finish_time=now()
  36. where id = %s
  37. """
  38. message = message if len(message) <= 200 else message[0:200]
  39. trans.execute(exec_sql, (message, id))
  40. info("执行失败:", message)
  41. def update_trans_status_success(id, wind_count=0, time_granularity=0,
  42. min_date=datetime.now(),
  43. max_date=datetime.now(),
  44. total_count=0, save_db=True):
  45. if save_db:
  46. if min_date is not None:
  47. exec_sql = """
  48. update data_transfer set transfer_status = 1,trans_sys_status = 1,transfer_progress=100,err_info = '',
  49. engine_count =%s,time_granularity=%s,transfer_finish_time=now(),
  50. data_min_time= %s,data_max_time= %s,transfer_data_count=%s,is_high_priority=0
  51. where id = %s
  52. """
  53. trans.execute(exec_sql, (wind_count, time_granularity, min_date, max_date, total_count, id))
  54. else:
  55. exec_sql = """
  56. update data_transfer set transfer_status = 1,trans_sys_status = 1,transfer_progress = 100,err_info = '',
  57. engine_count =%s,time_granularity=%s,transfer_finish_time=now(),is_high_priority=0
  58. where id = %s
  59. """
  60. trans.execute(exec_sql, (wind_count, time_granularity, id))
  61. def update_trans_transfer_progress(id, transfer_progress=0, save_db=True):
  62. print(id, transfer_progress)
  63. if save_db:
  64. exec_sql = """
  65. update data_transfer set transfer_progress =%s where id = %s
  66. """
  67. trans.execute(exec_sql, (int(transfer_progress), id))
  68. info('当前进度:', transfer_progress)
  69. def get_now_running_count():
  70. query_running_sql = """
  71. select count(1) as count from data_transfer where trans_sys_status = 0
  72. """
  73. data = trans.execute(query_running_sql)
  74. now_count = int(data[0]['count'])
  75. return now_count
  76. # 获取执行的数据
  77. def get_batch_exec_data() -> dict:
  78. query_next_exec_sql = """
  79. SELECT
  80. *
  81. FROM
  82. data_transfer t
  83. WHERE
  84. t.trans_sys_status in (-1,1,2) and t.transfer_status = -1
  85. AND t.read_dir != ''
  86. ORDER BY
  87. t.is_high_priority desc,
  88. t.update_time
  89. LIMIT 1
  90. """
  91. data = trans.execute(query_next_exec_sql)
  92. if type(data) == tuple:
  93. return None
  94. return data[0]
  95. def create_wave_table(table_name, save_db=True):
  96. if save_db:
  97. exec_sql = f"""
  98. CREATE TABLE `{table_name}` (
  99. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  100. `wind_turbine_number` varchar(20) DEFAULT NULL COMMENT '风机编号',
  101. `wind_turbine_name` varchar(20) DEFAULT NULL COMMENT '原始风机编号',
  102. `time_stamp` datetime DEFAULT NULL COMMENT '时间',
  103. `rotational_speed` float DEFAULT NULL COMMENT '转速',
  104. `sampling_frequency` varchar(50) DEFAULT NULL COMMENT '采样频率',
  105. `mesure_point_name` varchar(100) DEFAULT NULL COMMENT '测点名称',
  106. `type` int(11) DEFAULT '-1' COMMENT '-1:不存在 0:角度 1:速度 2:加速度 3:位移,默认 -1',
  107. `mesure_data` longtext COMMENT '测点数据',
  108. PRIMARY KEY (`id`),
  109. KEY `wind_turbine_number` (`wind_turbine_number`),
  110. KEY `time_stamp` (`time_stamp`),
  111. KEY `mesure_point_name` (`mesure_point_name`)
  112. ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4
  113. """
  114. trans.execute(exec_sql)