carStatusCloudController.js 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. 'use strict';
  2. const Controller = require('egg').Controller;
  3. // 车辆云状态统计分析模块
  4. class CarStatusCloudController extends Controller {
  5. constructor(ctx) {
  6. super(ctx);
  7. // 特殊的入参校验可以重写在这,默认可以使用commonRule
  8. this.createRule = {
  9. vin: { type: 'string', required: false },
  10. startTime: { type: 'number', min: 0 }, // 开始时间的时间戳 包含
  11. endTime: { type: 'number', min: 0 }, // 结束时间的时间戳 不包含(客户端处理结束时间 下一日 ,下一月第一日 ,下一年第一日)
  12. };
  13. }
  14. async normal() {
  15. const { ctx, service } = this;
  16. // 校验参数 组装参数
  17. const payload = ctx.validate(this.createRule);
  18. // // 调用 Service 进行业务处理
  19. const data = await ctx.getData(payload,
  20. { count: item => item.danger_drive_cnt + item.safety_air_bag_cnt + item.fault_cnt +
  21. item.long_drive_cnt + item.speeding_cnt + item.un_tie_sb_cnt + item.leave_sw_cnt
  22. + item.acceleration_cnt + item.decelerate_cnt + item.turn_cnt + item.clu_cnt,
  23. value: [ 'danger_drive_cnt', 'safety_air_bag_cnt', 'fault_cnt', 'long_drive_cnt', 'speeding_cnt', 'un_tie_sb_cnt', 'leave_sw_cnt',
  24. 'acceleration_cnt', 'decelerate_cnt', 'turn_cnt', 'clu_cnt' ] });
  25. // // 设置响应内容和响应状态码
  26. ctx.success({ data });
  27. }
  28. async fault() {
  29. const { ctx, service } = this;
  30. // 校验参数 组装参数
  31. const payload = ctx.validate(this.createRule);
  32. // // 调用 Service 进行业务处理
  33. const data = await ctx.getData(payload,
  34. { count: item => item.fault_type1 + item.fault_type2 + item.fault_type3 + item.fault_type4
  35. + item.fault_type5 + item.fault_type6 + item.fault_type7,
  36. value: [ 'fault_type1', 'fault_type2', 'fault_type3', 'fault_type4',
  37. 'fault_type5', 'fault_type6', 'fault_type7' ] });
  38. // // 设置响应内容和响应状态码
  39. ctx.success({ data });
  40. }
  41. async intelligence() {
  42. const { ctx, service } = this;
  43. // 校验参数 组装参数
  44. const payload = ctx.validate(this.createRule);
  45. // // 调用 Service 进行业务处理
  46. const data = await ctx.getData(payload,
  47. { count: item => item.v_parking_cnt + item.acc_cnt,
  48. value: [ 'v_parking_cnt', 'acc_cnt' ] });
  49. // // 设置响应内容和响应状态码
  50. ctx.success({ data });
  51. }
  52. async intelligenceMix() {
  53. const { ctx, service } = this;
  54. // 校验参数 组装参数
  55. const payload = ctx.validate(this.createRule);
  56. // // 调用 Service 进行业务处理
  57. const data = await ctx.getDataAdd(payload,
  58. { count: 'intel',
  59. value: [ 'pack', 'acc', 'intel', 'mileage_cnt' ] });
  60. // // 设置响应内容和响应状态码
  61. ctx.success({ data });
  62. }
  63. }
  64. module.exports = CarStatusCloudController;