修改峰平谷不对齐
This commit is contained in:
@@ -22,9 +22,11 @@ def collect_sum_data():
|
|||||||
try:
|
try:
|
||||||
data = request.get_json(silent=True) or {}
|
data = request.get_json(silent=True) or {}
|
||||||
history_id = data.get('history_id')
|
history_id = data.get('history_id')
|
||||||
log_info(f'[求和数据API] 采集求和数据,历史记录ID: {history_id or "全部"}', 'api')
|
start_date = data.get('start_date')
|
||||||
|
end_date = data.get('end_date')
|
||||||
|
log_info(f'[求和数据API] 采集求和数据,历史记录ID: {history_id or "全部"},日期范围: {start_date or "开始"} ~ {end_date or "结束"}', 'api')
|
||||||
|
|
||||||
result = collect_sum_data_from_history(history_id)
|
result = collect_sum_data_from_history(history_id, start_date, end_date)
|
||||||
if result['success']:
|
if result['success']:
|
||||||
log_info(f'[求和数据API] 采集成功: {result["message"]}', 'api')
|
log_info(f'[求和数据API] 采集成功: {result["message"]}', 'api')
|
||||||
return jsonify(result)
|
return jsonify(result)
|
||||||
|
|||||||
@@ -9,13 +9,15 @@ from lib.field_mapping import get_field_display_name
|
|||||||
from lib.logger import log_info, log_error, log_warning
|
from lib.logger import log_info, log_error, log_warning
|
||||||
|
|
||||||
|
|
||||||
def collect_sum_data_from_history(history_id=None):
|
def collect_sum_data_from_history(history_id=None, start_date=None, end_date=None):
|
||||||
"""
|
"""
|
||||||
从历史记录中采集求和数据并写入求和数据表
|
从历史记录中采集求和数据并写入求和数据表
|
||||||
充电电量(charge_degree)是必须采集的,其他求和字段有就采集,没有就不采集
|
充电电量(charge_degree)是必须采集的,其他求和字段有就采集,没有就不采集
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
history_id: 历史记录ID(可选,不填则采集所有成功的历史记录)
|
history_id: 历史记录ID(可选,不填则采集所有成功的历史记录)
|
||||||
|
start_date: 开始日期(可选,格式 YYYY-MM-DD)
|
||||||
|
end_date: 结束日期(可选,格式 YYYY-MM-DD)
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
dict: 采集结果
|
dict: 采集结果
|
||||||
@@ -28,8 +30,18 @@ def collect_sum_data_from_history(history_id=None):
|
|||||||
(history_id,)
|
(history_id,)
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
|
where_clauses = ['status = 1']
|
||||||
|
params = []
|
||||||
|
if start_date:
|
||||||
|
where_clauses.append('report_date >= %s')
|
||||||
|
params.append(start_date)
|
||||||
|
if end_date:
|
||||||
|
where_clauses.append('report_date <= %s')
|
||||||
|
params.append(end_date)
|
||||||
|
where_sql = ' AND '.join(where_clauses)
|
||||||
history_list = execute_query(
|
history_list = execute_query(
|
||||||
'SELECT * FROM t_daily_report_history WHERE status = 1 ORDER BY create_time DESC'
|
f'SELECT * FROM t_daily_report_history WHERE {where_sql} ORDER BY create_time DESC',
|
||||||
|
tuple(params)
|
||||||
)
|
)
|
||||||
|
|
||||||
if not history_list:
|
if not history_list:
|
||||||
@@ -506,6 +518,10 @@ def update_sum_data(sum_data_id, data):
|
|||||||
update_fields.append('remark = %s')
|
update_fields.append('remark = %s')
|
||||||
params.append(data['remark'])
|
params.append(data['remark'])
|
||||||
|
|
||||||
|
if 'data_source' in data:
|
||||||
|
update_fields.append('data_source = %s')
|
||||||
|
params.append(data['data_source'])
|
||||||
|
|
||||||
if not update_fields:
|
if not update_fields:
|
||||||
return {'success': False, 'message': '没有需要更新的字段'}
|
return {'success': False, 'message': '没有需要更新的字段'}
|
||||||
|
|
||||||
|
|||||||
@@ -33,9 +33,8 @@ function renderSumDataList(rawList) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// 排序:峰平谷按顺序
|
// 排序:尖峰平谷按顺序
|
||||||
const fieldOrder = ['sharp_electricity', 'peak_electricity', 'flat_electricity', 'valley_electricity',
|
const fieldOrder = ['sharp_electricity', 'peak_electricity', 'flat_electricity', 'valley_electricity'];
|
||||||
'peak_degree', 'peak_time_degree', 'normal_time_degree', 'valley_time_degree'];
|
|
||||||
sumDataDynamicFields = Object.keys(fieldMap).sort((a, b) => {
|
sumDataDynamicFields = Object.keys(fieldMap).sort((a, b) => {
|
||||||
const idxA = fieldOrder.indexOf(a);
|
const idxA = fieldOrder.indexOf(a);
|
||||||
const idxB = fieldOrder.indexOf(b);
|
const idxB = fieldOrder.indexOf(b);
|
||||||
@@ -231,7 +230,15 @@ function toggleSelectAllSumData() {
|
|||||||
|
|
||||||
// 从历史记录采集
|
// 从历史记录采集
|
||||||
async function collectSumDataFromHistory() {
|
async function collectSumDataFromHistory() {
|
||||||
if (!confirm('确定要从所有成功的历史记录中重新采集求和数据吗?\n(会先清除旧的自动采集数据)')) return;
|
const startDate = document.getElementById('sum-data-start-date').value;
|
||||||
|
const endDate = document.getElementById('sum-data-end-date').value;
|
||||||
|
|
||||||
|
if (!startDate || !endDate) {
|
||||||
|
alert('请先选择日期范围');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!confirm(`确定要从 ${startDate} 到 ${endDate} 的历史记录中采集求和数据吗?\n(会先清除该日期范围内旧的自动采集数据)`)) return;
|
||||||
|
|
||||||
const resultDiv = document.getElementById('sum-data-list');
|
const resultDiv = document.getElementById('sum-data-list');
|
||||||
resultDiv.innerHTML = '<tr><td colspan="12" class="empty">正在采集中,请稍候...</td></tr>';
|
resultDiv.innerHTML = '<tr><td colspan="12" class="empty">正在采集中,请稍候...</td></tr>';
|
||||||
@@ -240,7 +247,10 @@ async function collectSumDataFromHistory() {
|
|||||||
const response = await fetch('/api/sum-data/collect', {
|
const response = await fetch('/api/sum-data/collect', {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: { 'Content-Type': 'application/json' },
|
headers: { 'Content-Type': 'application/json' },
|
||||||
body: JSON.stringify({})
|
body: JSON.stringify({
|
||||||
|
start_date: startDate,
|
||||||
|
end_date: endDate
|
||||||
|
})
|
||||||
});
|
});
|
||||||
const result = await response.json();
|
const result = await response.json();
|
||||||
if (result.success) {
|
if (result.success) {
|
||||||
@@ -411,7 +421,8 @@ async function saveSumData() {
|
|||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
sum_value: fieldValue,
|
sum_value: fieldValue,
|
||||||
total_orders: totalOrders,
|
total_orders: totalOrders,
|
||||||
remark: remark
|
remark: remark,
|
||||||
|
data_source: 'manual'
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
const result = await response.json();
|
const result = await response.json();
|
||||||
@@ -452,28 +463,28 @@ async function saveSumData() {
|
|||||||
}
|
}
|
||||||
if (peakDegree) {
|
if (peakDegree) {
|
||||||
fieldsData.push({
|
fieldsData.push({
|
||||||
sum_field_key: 'peak_degree',
|
sum_field_key: 'sharp_electricity',
|
||||||
sum_field_name: '尖时电量(kWh)',
|
sum_field_name: '尖时电量(kWh)',
|
||||||
sum_value: peakDegree
|
sum_value: peakDegree
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (peakTime) {
|
if (peakTime) {
|
||||||
fieldsData.push({
|
fieldsData.push({
|
||||||
sum_field_key: 'peak_time_degree',
|
sum_field_key: 'peak_electricity',
|
||||||
sum_field_name: '峰时电量(kWh)',
|
sum_field_name: '峰时电量(kWh)',
|
||||||
sum_value: peakTime
|
sum_value: peakTime
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (normalTime) {
|
if (normalTime) {
|
||||||
fieldsData.push({
|
fieldsData.push({
|
||||||
sum_field_key: 'normal_time_degree',
|
sum_field_key: 'flat_electricity',
|
||||||
sum_field_name: '平时电量(kWh)',
|
sum_field_name: '平时电量(kWh)',
|
||||||
sum_value: normalTime
|
sum_value: normalTime
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (valleyTime) {
|
if (valleyTime) {
|
||||||
fieldsData.push({
|
fieldsData.push({
|
||||||
sum_field_key: 'valley_time_degree',
|
sum_field_key: 'valley_electricity',
|
||||||
sum_field_name: '谷时电量(kWh)',
|
sum_field_name: '谷时电量(kWh)',
|
||||||
sum_value: valleyTime
|
sum_value: valleyTime
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user