修改峰平谷不对齐
This commit is contained in:
@@ -22,9 +22,11 @@ def collect_sum_data():
|
||||
try:
|
||||
data = request.get_json(silent=True) or {}
|
||||
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']:
|
||||
log_info(f'[求和数据API] 采集成功: {result["message"]}', 'api')
|
||||
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
|
||||
|
||||
|
||||
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)是必须采集的,其他求和字段有就采集,没有就不采集
|
||||
|
||||
Args:
|
||||
history_id: 历史记录ID(可选,不填则采集所有成功的历史记录)
|
||||
start_date: 开始日期(可选,格式 YYYY-MM-DD)
|
||||
end_date: 结束日期(可选,格式 YYYY-MM-DD)
|
||||
|
||||
Returns:
|
||||
dict: 采集结果
|
||||
@@ -28,8 +30,18 @@ def collect_sum_data_from_history(history_id=None):
|
||||
(history_id,)
|
||||
)
|
||||
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(
|
||||
'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:
|
||||
@@ -506,6 +518,10 @@ def update_sum_data(sum_data_id, data):
|
||||
update_fields.append('remark = %s')
|
||||
params.append(data['remark'])
|
||||
|
||||
if 'data_source' in data:
|
||||
update_fields.append('data_source = %s')
|
||||
params.append(data['data_source'])
|
||||
|
||||
if not update_fields:
|
||||
return {'success': False, 'message': '没有需要更新的字段'}
|
||||
|
||||
|
||||
@@ -33,9 +33,8 @@ function renderSumDataList(rawList) {
|
||||
}
|
||||
});
|
||||
|
||||
// 排序:峰平谷按顺序
|
||||
const fieldOrder = ['sharp_electricity', 'peak_electricity', 'flat_electricity', 'valley_electricity',
|
||||
'peak_degree', 'peak_time_degree', 'normal_time_degree', 'valley_time_degree'];
|
||||
// 排序:尖峰平谷按顺序
|
||||
const fieldOrder = ['sharp_electricity', 'peak_electricity', 'flat_electricity', 'valley_electricity'];
|
||||
sumDataDynamicFields = Object.keys(fieldMap).sort((a, b) => {
|
||||
const idxA = fieldOrder.indexOf(a);
|
||||
const idxB = fieldOrder.indexOf(b);
|
||||
@@ -231,7 +230,15 @@ function toggleSelectAllSumData() {
|
||||
|
||||
// 从历史记录采集
|
||||
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');
|
||||
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', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({})
|
||||
body: JSON.stringify({
|
||||
start_date: startDate,
|
||||
end_date: endDate
|
||||
})
|
||||
});
|
||||
const result = await response.json();
|
||||
if (result.success) {
|
||||
@@ -411,7 +421,8 @@ async function saveSumData() {
|
||||
body: JSON.stringify({
|
||||
sum_value: fieldValue,
|
||||
total_orders: totalOrders,
|
||||
remark: remark
|
||||
remark: remark,
|
||||
data_source: 'manual'
|
||||
})
|
||||
});
|
||||
const result = await response.json();
|
||||
@@ -452,28 +463,28 @@ async function saveSumData() {
|
||||
}
|
||||
if (peakDegree) {
|
||||
fieldsData.push({
|
||||
sum_field_key: 'peak_degree',
|
||||
sum_field_key: 'sharp_electricity',
|
||||
sum_field_name: '尖时电量(kWh)',
|
||||
sum_value: peakDegree
|
||||
});
|
||||
}
|
||||
if (peakTime) {
|
||||
fieldsData.push({
|
||||
sum_field_key: 'peak_time_degree',
|
||||
sum_field_key: 'peak_electricity',
|
||||
sum_field_name: '峰时电量(kWh)',
|
||||
sum_value: peakTime
|
||||
});
|
||||
}
|
||||
if (normalTime) {
|
||||
fieldsData.push({
|
||||
sum_field_key: 'normal_time_degree',
|
||||
sum_field_key: 'flat_electricity',
|
||||
sum_field_name: '平时电量(kWh)',
|
||||
sum_value: normalTime
|
||||
});
|
||||
}
|
||||
if (valleyTime) {
|
||||
fieldsData.push({
|
||||
sum_field_key: 'valley_time_degree',
|
||||
sum_field_key: 'valley_electricity',
|
||||
sum_field_name: '谷时电量(kWh)',
|
||||
sum_value: valleyTime
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user