|
@@ -32,7 +32,7 @@ class TVehicleRecordService2 extends Service {
|
|
|
// TODO 暂时即时查询
|
|
|
async saled({ seriesCode, modelCode }) {
|
|
|
const { ctx } = this;
|
|
|
- const cond = [{ $match: { is_saled_car: 1, user_id: { $ne: null } } }];
|
|
|
+ const cond = [{ $match: { is_saled_car: 1, user_id: { $ne: null }, pro_code: { $exists: true } } }];
|
|
|
if (seriesCode) {
|
|
|
cond[0].$match.series_code = seriesCode;
|
|
|
}
|
|
@@ -43,37 +43,36 @@ class TVehicleRecordService2 extends Service {
|
|
|
|
|
|
const agg = [
|
|
|
...cond,
|
|
|
- { $lookup: { from: 't_sync_province', localField: 'pro_code', foreignField: 'out_pro_code', as: 'pro' } },
|
|
|
+ { $group: { _id: '$pro_code', count: { $sum: 1 } } },
|
|
|
+ { $lookup: { from: 't_sync_province', localField: '_id', foreignField: 'out_pro_code', as: 'pro' } },
|
|
|
{ $unwind: '$pro' },
|
|
|
- { $lookup: {
|
|
|
- from: 't_sync_city',
|
|
|
- let: { city_code: '$city_code', province_id: '$pro.province_id' },
|
|
|
- pipeline: [{ $match: { $expr: { $and:
|
|
|
- [
|
|
|
- { $eq: [ '$out_city_code', '$$city_code' ] },
|
|
|
- { $eq: [ '$province_id', '$$province_id' ] },
|
|
|
- ] } } }], as: 'city',
|
|
|
- } },
|
|
|
- { $unwind: '$city' },
|
|
|
- { $lookup: { from: 't_sync_county', localField: 'pro_code', foreignField: 'out_pro_code', as: 'area' } },
|
|
|
+ { $lookup: { from: 't_sync_county', localField: '_id', foreignField: 'out_pro_code', as: 'area' } },
|
|
|
{ $project: {
|
|
|
+ count: 1,
|
|
|
area_code: { $arrayElemAt: [ '$area.area_code', 0 ] },
|
|
|
area_name: { $arrayElemAt: [ '$area.area_name', 0 ] },
|
|
|
- provice_code: '$pro_code',
|
|
|
+ provice_code: '$pro.out_pro_code',
|
|
|
provice_name: '$pro.province_name',
|
|
|
- city_code: '$city_code',
|
|
|
- city_name: '$city.city_name',
|
|
|
} },
|
|
|
- ...ctx.helper.getLocationMongo(),
|
|
|
+ { $group: { _id: { area_code: '$area_code', area_name: '$area_name' },
|
|
|
+ provinces: { $push: { provice_code: '$provice_code', provice_name: '$provice_name',
|
|
|
+ count: '$count' } },
|
|
|
+ count: { $sum: '$count' } } },
|
|
|
+ { $group: { _id: null,
|
|
|
+ areas: { $push: { area_code: '$_id.area_code', area_name: '$_id.area_name',
|
|
|
+ provinces: '$provinces',
|
|
|
+ count: '$count' } },
|
|
|
+ count: { $sum: '$count' } } },
|
|
|
];
|
|
|
|
|
|
return await ctx.model.TVehicleRecordModel.aggregate(agg);
|
|
|
}
|
|
|
|
|
|
// TODO 暂时即时查询
|
|
|
- async saledCity({ seriesCode, modelCode, saledTime = this.ctx.helper.today() }) {
|
|
|
+ async saledCity({ seriesCode, modelCode }) {
|
|
|
const { ctx } = this;
|
|
|
- const cond = [{ $match: { is_saled_car: 1, user_id: { $ne: null }, sale_date: { $lt: saledTime } } }];
|
|
|
+ const cond = [{ $match: { is_saled_car: 1, user_id: { $ne: null },
|
|
|
+ pro_code: { $exists: true }, city_code: { $exists: true } } }];
|
|
|
if (seriesCode) {
|
|
|
cond[0].$match.series_code = seriesCode;
|
|
|
}
|
|
@@ -243,13 +242,13 @@ class TVehicleRecordService2 extends Service {
|
|
|
return;
|
|
|
}
|
|
|
initData.start_time = new Date();
|
|
|
- const result = await this.group(timeRangData);
|
|
|
- let car = [];
|
|
|
- let total = 0;
|
|
|
- if (result && result.length > 0) {
|
|
|
- car = result[0].car;
|
|
|
- total = result[0].total;
|
|
|
- }
|
|
|
+ // const result = await this.group(timeRangData); TODO 问题
|
|
|
+ const car = [];
|
|
|
+ const total = 0;
|
|
|
+ // if (result && result.length > 0) {
|
|
|
+ // car = result[0].car;
|
|
|
+ // total = result[0].total;
|
|
|
+ // }
|
|
|
|
|
|
// 实销城市 (按照时间 + 车型车系来取前三名)
|
|
|
|