carNumberController.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. 'use strict';
  2. const Controller = require('egg').Controller;
  3. // 车辆数量统计分析管理
  4. class CarNumberController extends Controller {
  5. constructor(ctx) {
  6. super(ctx);
  7. // 特殊的入参校验可以重写在这,默认可以使用commonRule
  8. this.createRule = {
  9. startTime: { type: 'number', min: 0 }, // 开始时间的时间戳 包含
  10. endTime: { type: 'number', min: 0 }, // 结束时间的时间戳 不包含(客户端处理结束时间 下一日 ,下一月第一日 ,下一年第一日)
  11. type: [ '1', '2' ], // 类型分为 0日 1月 2年
  12. };
  13. this.createSaledRule = {
  14. saledTime: { type: 'number', min: 0, required: false },
  15. };
  16. }
  17. // 实销车辆统计分析 实销车辆百分比统计分析 入网车辆总数统计分析
  18. async index() {
  19. const { ctx } = this;
  20. // 校验参数 组装参数
  21. const payload = ctx.validate();
  22. // 调用 Service 进行业务处理
  23. const data = await ctx.getDataAdd(payload, { count: item => parseFloat((item.saledCount * 100 / item.count).toFixed(0)),
  24. value: [ 'saledCount', 'count' ] });
  25. // 设置响应内容和响应状态码
  26. ctx.success({ data });
  27. }
  28. // 实销车辆统计分析 实销车辆百分比统计分析 入网车辆总数统计分析
  29. async increment() {
  30. const { ctx } = this;
  31. // 校验参数 组装参数
  32. const payload = ctx.validate();
  33. // 调用 Service 进行业务处理
  34. const data = await ctx.getData(payload);
  35. // 设置响应内容和响应状态码
  36. ctx.success({ data });
  37. }
  38. // 在线车辆分布统计分析
  39. async online() {
  40. const { ctx } = this;
  41. // 校验参数 组装参数
  42. const payload = ctx.validate();
  43. // 调用 Service 进行业务处理
  44. const data = await ctx.getData(payload);
  45. // 设置响应内容和响应状态码
  46. ctx.success({ data });
  47. }
  48. // 活跃车辆
  49. async active() {
  50. const { ctx } = this;
  51. // 校验参数 组装参数
  52. const payload = ctx.validate(this.createRule);
  53. // 调用 Service 进行业务处理
  54. const data = ctx.getDataAdd(payload, {
  55. count: item => item.count - item.activeCount,
  56. value: [ 'activeCount', 'count' ] });
  57. // 设置响应内容和响应状态码
  58. ctx.success({ data });
  59. }
  60. // 车辆上报分类信息统计
  61. async report() {
  62. const { ctx } = this;
  63. // 校验参数 组装参数
  64. const payload = ctx.validate();
  65. // 调用 Service 进行业务处理
  66. const data = await ctx.getData(payload, {
  67. count: item => item.vhl_val_cnt + item.alarm_cnt + item.failure_cnt,
  68. value: [ 'vhl_val_cnt', 'alarm_cnt', 'failure_cnt' ],
  69. });
  70. // 设置响应内容和响应状态码
  71. ctx.success({ data });
  72. }
  73. async onlineCount() {
  74. const { ctx } = this;
  75. // 调用 Service 进行业务处理
  76. const data = await ctx.getOnlineCount();
  77. // 设置响应内容和响应状态码
  78. ctx.success({ data });
  79. }
  80. async saledCity() {
  81. const { ctx } = this;
  82. // 校验参数 组装参数
  83. const payload = ctx.validate(this.createSaledRule);
  84. // 调用 Service 进行业务处理
  85. const data = await ctx.getSaledCity(payload);
  86. // 设置响应内容和响应状态码
  87. ctx.success({ data });
  88. }
  89. async activeExt() {
  90. const { ctx } = this;
  91. // 校验参数 组装参数
  92. const payload = ctx.validate({});
  93. // 调用 Service 进行业务处理
  94. const data = await ctx.getActiveExt(payload);
  95. // 设置响应内容和响应状态码
  96. ctx.success({ data });
  97. }
  98. }
  99. module.exports = CarNumberController;