hms_cattle_research/sql_statements.py
2024-12-22 09:58:15 +08:00

155 lines
5.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Author: Lee Wu Love Lele
# Datetime: 2024/12/6 19:53
"""
SELECT ff.reader_code FROM farm_field AS ff
WHERE ff.is_deleted = 1
AND ff.reader_code IS NOT NULL AND ff.reader_code != '' AND ff.rfid_reader_code IS NOT NULL AND ff.rfid_reader_code != ''
GROUP BY ff.reader_code
"""
QUERY_DEVICES = "SELECT ff.reader_code FROM farm_field AS ff WHERE ff.is_deleted = 1 AND ff.reader_code IS NOT NULL AND ff.reader_code != '' AND ff.rfid_reader_code IS NOT NULL AND ff.rfid_reader_code != '' GROUP BY ff.reader_code;"
QUERY_EAR_TAG_ID_BY_RFID = """
SELECT sb.shell_subject_code
FROM subject_base AS sb
WHERE is_deleted = 1
AND lot_subject_code = %s
AND shell_subject_code != ''
"""
"""
查询本地日志中是否分析过地磅或者分析到了什么时间
"""
QUERY_EXEC_LOG = "SELECT * FROM exec_log AS el WHERE el.time_std = %s;"
INSERT_WEIGHT_WAVE = """
INSERT INTO weight_wave (floor_scale_id, start_time, end_time, time_std , max_frq_rfid , max_frq, weight, create_time,last_update_time)
VALUES (%s,%s,%s,%s,%s,%s,%s,NOW(),NOW())
"""
INSERT_RIFD_FRQ = """
INSERT INTO rfid_value_frq(id_weight_wave,ear_tag,rfid,rfid_frq,time_std,create_time,last_update_time)
VALUES (%s,%s,%s,%s,%s,%s,%s)
"""
def sql_delete_weight_wave_all():
return "TRUNCATE TABLE weight_wave"
def sql_delete_weight_wave_by_time_std():
return "DELETE FROM weight_wave WHERE time_std = %s;"
DELETE_RFID_FRQ = "TRUNCATE TABLE rfid_value_frq"
def sql_query_buy_weight_by_rfid():
return "SELECT buy_weight FROM subject_base WHERE lot_subject_code = %s;"
def sql_query_logs_count_group_by_biz_data(reader_names=None):
"""
耳标RFID识别结果频次biz_data返回的是RFID
:param reader_names: RFID Reader ID (tuple)
:return:
"""
placeholders = ', '.join(['%s'] * len(reader_names))
return f"SELECT biz_data, COUNT(*) AS repeat_count FROM notify_log WHERE notify_group = 'rfidCallback' AND reader_name IN ({placeholders}) AND biz_time BETWEEN %s AND %s GROUP BY biz_data ORDER BY repeat_count DESC;"
# def sql_query_logs_by_reader_name(reader_names=None):
# """
# 根据设备ID查询全时间周期
# :param reader_name: (tuple)
# :return:
# """
# placeholders = ', '.join(['%s'] * len(reader_names))
# return f"SELECT nl.biz_time, nl.biz_data, nl.create_time, nl.relation_reader_name FROM notify_log AS nl WHERE reader_name IN ({placeholders}) AND is_deleted = 1 ORDER BY biz_time ASC, create_time ASC;"
def sql_query_logs_by_reader_name_and_duartion(reader_names=None, time_std=1):
"""
根据设备ID查询特定时间段
:param reader_name: (tuple)
:return:
"""
placeholders = ', '.join(['%s'] * len(reader_names))
first_order = 'biz_data'
second_order = 'create_time'
time = 'biz_time'
if time_std == 1:
pass
elif time_std == 2:
first_order = 'create_time'
second_order = 'biz_data'
time = 'create_time'
pass
return f"SELECT nl.notify_id, nl.biz_data ,nl.biz_time, nl.create_time, nl.relation_reader_name FROM notify_log AS nl WHERE reader_name IN({placeholders}) AND is_deleted = 1 AND {time} BETWEEN %s AND %s ORDER BY {first_order} ASC, {second_order} ASC, notify_id ASC;"
def sql_query_logs_group_by_relation_reader_name(reader_names=None):
"""
根据地磅ID查询日志中对应的RFIDReaderID出现次数识别一个时间段中地磅ID与RFIDReaderID对应关系的变化。
:param reader_name: (tuple)
:return:
"""
placeholders = ', '.join(['%s'] * len(reader_names))
return f"SELECT relation_reader_name, COUNT(*) AS repeat_count FROM notify_log WHERE reader_name IN ({placeholders}) AND biz_time BETWEEN %s AND %s GROUP BY relation_reader_name ORDER BY repeat_count DESC;"
def sql_insert_rfid_reader():
return "INSERT INTO relation_rfid_reader(id_weight_wave,reader_name,create_time,last_update_time) VALUES (%s,%s,NOW(),NOW());"
def sql_insert_exec_log():
return "INSERT INTO exec_log(floor_scale_id,start_time,end_time,time_std,create_time,last_update_time) VALUES(%s,%s,%s,%s,NOW(),NOW());"
def sql_delete_exec_log_all():
return "TRUNCATE TABLE exec_log;"
def sql_delete_exec_log_by_time_std():
return "DELETE FROM weight_wave WHERE time_std = %s;"
def sql_delete_relatioin_rfid_reader():
return "TRUNCATE TABLE relation_rfid_reader;"
def sql_update_exec_log():
return "UPDATE exec_log SET end_time = %s, last_update_time = NOW() WHERE floor_scale_id = %s;"
def sql_query_weight_wave_by_floor_scale_id():
"""
通过地磅ID查询全部体重波
:return:
"""
return "SELECT * FROM weight_wave where floor_scale_id = %s"
def sql_query_weight_wave_by_rfid():
"""
最高出现频率的RFID查询全部体重波
:return:
"""
return "SELECT * FROM weight_wave where max_frq_rfid = %s"
def sql_query_relation_reader_by_id_weight_wave():
return "SELECT * FROM relation_rfid_reader AS rrr WHERE rrr.id_weight_wave = %s"
def sql_query_weight_wave_group_by_rfid():
return "SELECT max_frq_rfid, COUNT(*) AS repeat_count FROM weight_wave WHERE time_std = %s GROUP BY max_frq_rfid;"
def sql_query_weight_wave_by_rfid():
return "SELECT * FROM weight_wave WHERE max_frq_rfid = %s AND time_std = %s ORDER BY start_time ASC;"
def sql_query_rfid_all_in_cattle():
return "SELECT subject_id AS id ,lot_subject_code AS rfid, shell_subject_code AS ear_tag FROM subject_base WHERE is_deleted = 1 AND buy_weight != 0 AND lot_subject_code != '' AND shell_subject_code != '';"