|
|
|
@ -825,43 +825,69 @@ const prepareInventoryChartData = () => {
|
|
|
|
console.log('开始处理销售数据');
|
|
|
|
console.log('开始处理销售数据');
|
|
|
|
console.log('第一条销售数据示例:', salesData.value[0]);
|
|
|
|
console.log('第一条销售数据示例:', salesData.value[0]);
|
|
|
|
|
|
|
|
|
|
|
|
const salesSeriesData = salesData.value.map((item, index) => {
|
|
|
|
// 按日期分组销售数据
|
|
|
|
console.log(`处理销售第${index}条数据:`, item);
|
|
|
|
const salesByDate = new Map();
|
|
|
|
|
|
|
|
salesData.value.forEach((item, index) => {
|
|
|
|
// 销售数据字段映射
|
|
|
|
|
|
|
|
const timeField = item.date || item.create_time || item.createTime || item.time || item.timestamp;
|
|
|
|
const timeField = item.date || item.create_time || item.createTime || item.time || item.timestamp;
|
|
|
|
const boxCountField = item.box_count || item.boxCount || item.box || item.count;
|
|
|
|
if (timeField) {
|
|
|
|
const weightField = item.weight || item.total_weight || item.totalWeight;
|
|
|
|
const dateKey = new Date(timeField).toISOString().split('T')[0]; // YYYY-MM-DD格式
|
|
|
|
|
|
|
|
if (!salesByDate.has(dateKey)) {
|
|
|
|
console.log('销售字段映射检查:', {
|
|
|
|
salesByDate.set(dateKey, []);
|
|
|
|
timeField,
|
|
|
|
}
|
|
|
|
boxCountField,
|
|
|
|
salesByDate.get(dateKey).push(item);
|
|
|
|
weightField
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!timeField) {
|
|
|
|
|
|
|
|
console.warn(`销售第${index}条数据缺少时间字段`);
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const time = new Date(timeField).getTime();
|
|
|
|
|
|
|
|
let value;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (chartUnit.value === 'box') {
|
|
|
|
|
|
|
|
value = boxCountField || 0;
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
value = weightField || 0;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
console.log(`销售时间戳: ${time}, 值: ${value}`);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (isNaN(time) || time <= 0) {
|
|
|
|
|
|
|
|
console.warn(`销售第${index}条数据时间格式无效:`, timeField);
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const salesSeriesData = [];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 处理每个日期的销售记录
|
|
|
|
|
|
|
|
salesByDate.forEach((items, dateKey) => {
|
|
|
|
|
|
|
|
console.log(`处理日期 ${dateKey} 的 ${items.length} 条销售记录`);
|
|
|
|
|
|
|
|
|
|
|
|
return [time, value];
|
|
|
|
items.forEach((item, dayIndex) => {
|
|
|
|
}).filter(item => item !== null); // 过滤掉无效数据
|
|
|
|
console.log(`处理销售第${dayIndex + 1}条数据:`, item);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 销售数据字段映射
|
|
|
|
|
|
|
|
const timeField = item.date || item.create_time || item.createTime || item.time || item.timestamp;
|
|
|
|
|
|
|
|
const boxCountField = item.box_count || item.boxCount || item.box || item.count;
|
|
|
|
|
|
|
|
const weightField = item.weight || item.total_weight || item.totalWeight;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
console.log('销售字段映射检查:', {
|
|
|
|
|
|
|
|
timeField,
|
|
|
|
|
|
|
|
boxCountField,
|
|
|
|
|
|
|
|
weightField
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!timeField) {
|
|
|
|
|
|
|
|
console.warn(`销售第${dayIndex + 1}条数据缺少时间字段`);
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 基础时间戳
|
|
|
|
|
|
|
|
const baseTime = new Date(timeField).getTime();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 为同一天的多个记录分配不同的时间点(间隔30分钟)
|
|
|
|
|
|
|
|
const timeOffset = dayIndex * 30 * 60 * 1000; // 30分钟间隔
|
|
|
|
|
|
|
|
const adjustedTime = baseTime + timeOffset;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let value;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (chartUnit.value === 'box') {
|
|
|
|
|
|
|
|
value = boxCountField || 0;
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
value = weightField || 0;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
console.log(`销售时间戳: ${adjustedTime}, 值: ${value}`);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (isNaN(adjustedTime) || adjustedTime <= 0) {
|
|
|
|
|
|
|
|
console.warn(`销售第${dayIndex + 1}条数据时间格式无效:`, timeField);
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
salesSeriesData.push([adjustedTime, value]);
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
console.log('销售转换后的图表数据:', salesSeriesData);
|
|
|
|
console.log('销售转换后的图表数据:', salesSeriesData);
|
|
|
|
console.log('销售有效数据点数量:', salesSeriesData.length);
|
|
|
|
console.log('销售有效数据点数量:', salesSeriesData.length);
|
|
|
|
|