|
@@ -7,18 +7,19 @@ class TFsmHitoryService extends Service {
|
|
|
|
|
|
async danger({ type, startTime, endTime, vin }) {
|
|
|
const { ctx } = this;
|
|
|
- const cond = [{ $match: {} }];
|
|
|
+ let cond = [];
|
|
|
if (vin) {
|
|
|
- cond[0].$match.vin = vin;
|
|
|
+ cond = [{ $match: {} }]
|
|
|
+ cond[0].$match = { 'vins._id': vin };
|
|
|
}
|
|
|
const agg = [
|
|
|
{ $match: ctx.helper.getTimeRangMatch(startTime, endTime) },
|
|
|
{ $unwind: '$vins' },
|
|
|
...cond,
|
|
|
{ $group: ctx.helper.getTimeGroup(type,
|
|
|
- { danger_drive_cnt: { $sum: '$danger_drive_cnt' },
|
|
|
- safety_air_bag_cnt: { $sum: '$safety_air_bag_cnt' },
|
|
|
- fault_cnt: { $sum: '$fault_cnt' },
|
|
|
+ { danger_drive_cnt: { $sum: '$vins.danger_drive_cnt' },
|
|
|
+ safety_air_bag_cnt: { $sum: '$vins.safety_air_bag_cnt' },
|
|
|
+ fault_cnt: { $sum: '$vins.fault_cnt' },
|
|
|
}),
|
|
|
},
|
|
|
];
|
|
@@ -30,7 +31,7 @@ class TFsmHitoryService extends Service {
|
|
|
const { ctx } = this;
|
|
|
const cond = [{ $match: {} }];
|
|
|
if (vin) {
|
|
|
- cond[0].$match.vin = vin;
|
|
|
+ cond[0].$match = { 'vins._id': vin };
|
|
|
}
|
|
|
const agg = [
|
|
|
{ $match: ctx.helper.getTimeRangMatch(startTime, endTime) },
|
|
@@ -38,14 +39,14 @@ class TFsmHitoryService extends Service {
|
|
|
...cond,
|
|
|
{ $group: ctx.helper.getTimeGroup(type,
|
|
|
{
|
|
|
- long_drive_cnt: { $sum: '$long_drive_cnt' }, // 长时行驶次数
|
|
|
- speeding_cnt: { $sum: '$speeding_cnt' }, // 超速行驶次数
|
|
|
- un_tie_sb_cnt: { $sum: '$un_tie_sb_cnt' }, // 未系安全带次数
|
|
|
- leave_sw_cnt: { $sum: '$leave_sw_cnt' }, // 双手离开方向盘次数
|
|
|
- acceleration_cnt: { $sum: '$acceleration_cnt' }, // 急加速次数
|
|
|
- decelerate_cnt: { $sum: '$decelerate_cnt' }, // 加减速次数
|
|
|
- turn_cnt: { $sum: '$turn_cnt' }, // 急转弯次数
|
|
|
- clu_cnt: { $sum: '$clu_cnt' }, // 急换道次数
|
|
|
+ long_drive_cnt: { $sum: '$vins.long_drive_cnt' }, // 长时行驶次数
|
|
|
+ speeding_cnt: { $sum: '$vins.speeding_cnt' }, // 超速行驶次数
|
|
|
+ un_tie_sb_cnt: { $sum: '$vins.un_tie_sb_cnt' }, // 未系安全带次数
|
|
|
+ leave_sw_cnt: { $sum: '$vins.leave_sw_cnt' }, // 双手离开方向盘次数
|
|
|
+ acceleration_cnt: { $sum: '$vins.acceleration_cnt' }, // 急加速次数
|
|
|
+ decelerate_cnt: { $sum: '$vins.decelerate_cnt' }, // 加减速次数
|
|
|
+ turn_cnt: { $sum: '$vins.turn_cnt' }, // 急转弯次数
|
|
|
+ clu_cnt: { $sum: '$vins.clu_cnt' }, // 急换道次数
|
|
|
}),
|
|
|
},
|
|
|
];
|
|
@@ -57,7 +58,7 @@ class TFsmHitoryService extends Service {
|
|
|
const { ctx } = this;
|
|
|
const cond = [{ $match: {} }];
|
|
|
if (vin) {
|
|
|
- cond[0].$match.vin = vin;
|
|
|
+ cond[0].$match = { 'vins._id': vin };
|
|
|
}
|
|
|
const agg = [
|
|
|
{ $match: ctx.helper.getTimeRangMatch(startTime, endTime) },
|
|
@@ -65,13 +66,13 @@ class TFsmHitoryService extends Service {
|
|
|
...cond,
|
|
|
{ $group: ctx.helper.getTimeGroup(type,
|
|
|
{
|
|
|
- fault_type1: { $sum: '$fault_type1' }, // 故障类型1
|
|
|
- fault_type2: { $sum: '$fault_type2' }, // 故障类型2
|
|
|
- fault_type3: { $sum: '$fault_type3' }, // 故障类型3
|
|
|
- fault_type4: { $sum: '$fault_type4' }, // 故障类型4
|
|
|
- fault_type5: { $sum: '$fault_type5' }, // 故障类型5
|
|
|
- fault_type6: { $sum: '$fault_type6' }, // 故障类型6
|
|
|
- fault_type7: { $sum: '$fault_type7' }, // 故障类型7
|
|
|
+ fault_type1: { $sum: '$vins.fault_type1' }, // 故障类型1
|
|
|
+ fault_type2: { $sum: '$vins.fault_type2' }, // 故障类型2
|
|
|
+ fault_type3: { $sum: '$vins.fault_type3' }, // 故障类型3
|
|
|
+ fault_type4: { $sum: '$vins.fault_type4' }, // 故障类型4
|
|
|
+ fault_type5: { $sum: '$vins.fault_type5' }, // 故障类型5
|
|
|
+ fault_type6: { $sum: '$vins.fault_type6' }, // 故障类型6
|
|
|
+ fault_type7: { $sum: '$vins.fault_type7' }, // 故障类型7
|
|
|
}),
|
|
|
},
|
|
|
];
|
|
@@ -83,7 +84,7 @@ class TFsmHitoryService extends Service {
|
|
|
const { ctx } = this;
|
|
|
const cond = [{ $match: {} }];
|
|
|
if (vin) {
|
|
|
- cond[0].$match.vin = vin;
|
|
|
+ cond[0].$match = { 'vins._id': vin };
|
|
|
}
|
|
|
const agg = [
|
|
|
{ $match: ctx.helper.getTimeRangMatch(startTime, endTime) },
|
|
@@ -91,8 +92,8 @@ class TFsmHitoryService extends Service {
|
|
|
...cond,
|
|
|
{ $group: ctx.helper.getTimeGroup(type,
|
|
|
{
|
|
|
- v_parking_cnt: { $sum: '$v_parking_cnt' }, // 代客泊车次数
|
|
|
- acc_cnt: { $sum: '$acc_cnt' }, // ACC次数
|
|
|
+ v_parking_cnt: { $sum: '$vins.v_parking_cnt' }, // 代客泊车次数
|
|
|
+ acc_cnt: { $sum: '$vins.acc_cnt' }, // ACC次数
|
|
|
}),
|
|
|
},
|
|
|
];
|
|
@@ -104,7 +105,7 @@ class TFsmHitoryService extends Service {
|
|
|
const { ctx } = this;
|
|
|
const cond = [{ $match: {} }];
|
|
|
if (vin) {
|
|
|
- cond[0].$match.vin = vin;
|
|
|
+ cond[0].$match = { 'vins._id': vin };
|
|
|
}
|
|
|
const agg = [
|
|
|
{ $match: ctx.helper.getTimeRangMatch(startTime, endTime) },
|
|
@@ -112,10 +113,10 @@ class TFsmHitoryService extends Service {
|
|
|
...cond,
|
|
|
{ $group: ctx.helper.getTimeGroup(type,
|
|
|
{
|
|
|
- intel: { $sum: '$intel' }, // 智能行程
|
|
|
- pack: { $sum: '$pack' }, // 智能行程
|
|
|
- acc: { $sum: '$acc' }, // 智能行程
|
|
|
- mileage_cnt: { $sum: '$mileage_cnt' }, // 总行程
|
|
|
+ intel: { $sum: '$vins.intel' }, // 智能行程
|
|
|
+ pack: { $sum: '$vins.pack' }, // 智能行程
|
|
|
+ acc: { $sum: '$vins.acc' }, // 智能行程
|
|
|
+ mileage_cnt: { $sum: '$vins.mileage_cnt' }, // 总行程
|
|
|
}),
|
|
|
},
|
|
|
];
|
|
@@ -252,42 +253,46 @@ class TFsmHitoryService extends Service {
|
|
|
const vins = await this.app.getHistoryModel(ctx.helper.formatTime3(startTime)).aggregate(agg)
|
|
|
.allowDiskUse(true);
|
|
|
|
|
|
- // const parkArr = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 ];
|
|
|
- //
|
|
|
- // for (const vin of vins) {
|
|
|
- // const list = await this.app.getHistoryModel(ctx.helper.formatTime3(startTime))
|
|
|
- // .find({ vin: vin._id }).batchSize(100000);
|
|
|
- // let iFlag = 0;
|
|
|
- // let pFlag = 0;
|
|
|
- // let aFlag = 0;
|
|
|
- // let intelCount = 0;
|
|
|
- // let packCount = 0;
|
|
|
- // let accCount = 0;
|
|
|
- // list.forEach(l => {
|
|
|
- // if (l.TRAVEL_STATUS == '1') {
|
|
|
- // iFlag = 0;
|
|
|
- // pFlag = 0;
|
|
|
- // aFlag = 0;
|
|
|
- // } else {
|
|
|
- // if (iFlag == 0 && ((l._S0210 && l._S0210[1] && parkArr.indexOf(l._S0210[1]) != -1) || l._S0508[1])) {
|
|
|
- // iFlag = 1;
|
|
|
- // intelCount++;
|
|
|
- // }
|
|
|
- // if (pFlag == 0 && l._S0210 && l._S0210[1] && parkArr.indexOf(l._S0210[1]) != -1) {
|
|
|
- // packCount++;
|
|
|
- // pFlag = 1;
|
|
|
- // }
|
|
|
- // if (aFlag == 0 && l._S0508[1]) {
|
|
|
- // accCount++;
|
|
|
- // aFlag = 1;
|
|
|
- // }
|
|
|
- // }
|
|
|
- // });
|
|
|
- //
|
|
|
- // vin.intel = intelCount;
|
|
|
- // vin.pack = packCount;
|
|
|
- // vin.acc = accCount;
|
|
|
- // }
|
|
|
+ const parkArr = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 ];
|
|
|
+
|
|
|
+ console.log('size', vins.length);
|
|
|
+ let num = 0;
|
|
|
+ for (const vin of vins) {
|
|
|
+ num++;
|
|
|
+ console.log('vin', vin._id, num);
|
|
|
+ const list = await this.app.getHistoryModel(ctx.helper.formatTime3(startTime))
|
|
|
+ .find({ vin: vin._id, timeStamp: { $gte: startTime, $lt: endTime } }).batchSize(100000);
|
|
|
+ let iFlag = 0;
|
|
|
+ let pFlag = 0;
|
|
|
+ let aFlag = 0;
|
|
|
+ let intelCount = 0;
|
|
|
+ let packCount = 0;
|
|
|
+ let accCount = 0;
|
|
|
+ list.forEach(l => {
|
|
|
+ if (l.TRAVEL_STATUS == '1') {
|
|
|
+ iFlag = 0;
|
|
|
+ pFlag = 0;
|
|
|
+ aFlag = 0;
|
|
|
+ } else {
|
|
|
+ if (iFlag == 0 && ((l._S0210 && l._S0210[1] && parkArr.indexOf(l._S0210[1]) != -1) || l._S0508[1])) {
|
|
|
+ iFlag = 1;
|
|
|
+ intelCount++;
|
|
|
+ }
|
|
|
+ if (pFlag == 0 && l._S0210 && l._S0210[1] && parkArr.indexOf(l._S0210[1]) != -1) {
|
|
|
+ packCount++;
|
|
|
+ pFlag = 1;
|
|
|
+ }
|
|
|
+ if (aFlag == 0 && l._S0508[1]) {
|
|
|
+ accCount++;
|
|
|
+ aFlag = 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ vin.intel = intelCount;
|
|
|
+ vin.pack = packCount;
|
|
|
+ vin.acc = accCount;
|
|
|
+ }
|
|
|
|
|
|
return vins;
|
|
|
}
|