weapp_dashboard_controller.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. 'use strict';
  2. const DashboardStats = require('../lib/dashboard_stats');
  3. const auditConst = require('../const/audit');
  4. module.exports = app => {
  5. class WeappDashboardController extends app.BaseController {
  6. async workspace(ctx) {
  7. try {
  8. const allAuditTenders = await ctx.service.ledgerAudit.getAuditTender(ctx.session.sessionUser.id);
  9. const allAuditStages = await ctx.service.stageAudit.getAuditStage(ctx.session.sessionUser.id);
  10. const allAuditRevise = await ctx.service.reviseAudit.getAuditRevise(ctx.session.sessionUser.id);
  11. const allAuditMaterial = await ctx.service.materialAudit.getAuditMaterial(ctx.session.sessionUser.id);
  12. const allAuditAdvance = await ctx.service.advanceAudit.getAuditAdvance(ctx.session.sessionUser.id);
  13. const allAuditChanges = await ctx.service.changeAudit.getAuditChangeByWeapp(ctx.session.sessionUser.id, '', true);
  14. const allAuditChangeProject = await ctx.service.changeProjectAudit.getAuditChangeProject(ctx.session.sessionUser.id, '', true);
  15. const allAuditChangeApply = await ctx.service.changeApplyAudit.getAuditChangeApply(ctx.session.sessionUser.id, '', true);
  16. const allAuditChangePlan = await ctx.service.changePlanAudit.getAuditChangePlan(ctx.session.sessionUser.id, '', true);
  17. // const allAuditPayments = await ctx.service.paymentDetailAudit.getAuditPayment(ctx.session.sessionUser.id);
  18. // const allAuditStageAss = await ctx.service.stageAuditAss.getAuditStageAss(ctx.session.sessionUser.id);
  19. // const allAuditFinancials = await ctx.service.financialPayAudit.getAuditFinancial(ctx.session.sessionUser.id);
  20. const allAuditQualityInspections = await ctx.service.qualityInspectionAudit.getAuditInspection(ctx.session.sessionUser.id);
  21. const allAuditSafeInspections = await ctx.service.safeInspectionAudit.getAuditInspection(ctx.session.sessionUser.id);
  22. // const allAuditSafeStage = await ctx.service.safeStageAudit.getAuditStage(ctx.session.sessionUser.id);
  23. // const allAuditPhasePay = await ctx.service.phasePayAudit.getAuditStage(ctx.session.sessionUser.id);
  24. const dashboardStatus = {
  25. all: 0,
  26. dashboard: 0,
  27. worry: 0,
  28. early: 0,
  29. shenpi: {
  30. ledger: 0,
  31. stage: 0,
  32. change: 0,
  33. revise: 0,
  34. material: 0,
  35. advance: 0,
  36. changeProject: 0,
  37. changeApply: 0,
  38. changePlan: 0,
  39. payment: 0,
  40. financial: 0,
  41. inspection: 0,
  42. safeInspection: 0,
  43. safeStage: 0,
  44. phasePay: 0,
  45. },
  46. };
  47. const subProjects = await ctx.service.subProject.getSubProject(ctx.session.sessionUser.project_id, ctx.session.sessionUser.id, ctx.session.sessionUser.is_admin, true);
  48. for (const subProject of subProjects) {
  49. subProject.page_show = ctx.service.subProject.getPageShow(subProject.page_show);
  50. }
  51. const dashboardShenpis = [];
  52. const auditTenders = await DashboardStats.auditSet(ctx, allAuditTenders, subProjects, dashboardStatus, 'ledger');
  53. dashboardShenpis.push(...(auditTenders.map(item => ({ ...item, type: 'ledger', subType: 'ledger' }))));
  54. const auditStages = await DashboardStats.auditSet(ctx, allAuditStages, subProjects, dashboardStatus, 'stage');
  55. dashboardShenpis.push(...(auditStages.map(item => ({ ...item, type: 'stage', subType: 'stage' }))));
  56. const auditChanges = await DashboardStats.auditSet(ctx, allAuditChanges, subProjects, dashboardStatus, 'change');
  57. for (const item of auditChanges) {
  58. let sp = null;
  59. if (item.spid) {
  60. if (ctx.helper._.findIndex(subProjects, { id: item.spid }) !== -1) {
  61. sp = ctx.helper._.find(subProjects, { id: item.spid });
  62. } else {
  63. sp = await ctx.service.subProject.getDataById(item.spid);
  64. subProjects.push(sp);
  65. }
  66. }
  67. if (sp && sp.page_show) {
  68. if (sp.page_show.openChangeProject) {
  69. dashboardShenpis.push({ ...item, type: 'change', subType: 'change' });
  70. }
  71. }
  72. }
  73. const auditRevise = await DashboardStats.auditSet(ctx, allAuditRevise, subProjects, dashboardStatus, 'revise');
  74. dashboardShenpis.push(...(auditRevise.map(item => ({ ...item, type: 'revise', subType: 'revise' }))));
  75. const auditMaterial = await DashboardStats.auditSet(ctx, allAuditMaterial, subProjects, dashboardStatus, 'material');
  76. for (const item of auditMaterial) {
  77. let sp = null;
  78. if (item.spid) {
  79. if (ctx.helper._.findIndex(subProjects, { id: item.spid }) !== -1) {
  80. sp = ctx.helper._.find(subProjects, { id: item.spid });
  81. } else {
  82. sp = await ctx.service.subProject.getDataById(item.spid);
  83. subProjects.push(sp);
  84. }
  85. }
  86. if (sp && sp.page_show) {
  87. if (sp.page_show.openMaterial) {
  88. dashboardShenpis.push({ ...item, type: 'material', subType: 'material' });
  89. }
  90. }
  91. }
  92. const auditAdvance = await DashboardStats.auditSet(ctx, allAuditAdvance, subProjects, dashboardStatus, 'advance');
  93. dashboardShenpis.push(...(auditAdvance.map(item => ({ ...item, type: 'advance', subType: 'advance' }))));
  94. const auditChangeProject = await DashboardStats.auditSet(ctx, allAuditChangeProject, subProjects, dashboardStatus, 'changeProject');
  95. for (const item of auditChangeProject) {
  96. let sp = null;
  97. if (item.spid) {
  98. if (ctx.helper._.findIndex(subProjects, { id: item.spid }) !== -1) {
  99. sp = ctx.helper._.find(subProjects, { id: item.spid });
  100. } else {
  101. sp = await ctx.service.subProject.getDataById(item.spid);
  102. subProjects.push(sp);
  103. }
  104. }
  105. if (sp && sp.page_show) {
  106. if (sp.page_show.openChangeProject) {
  107. dashboardShenpis.push({ ...item, type: 'change', subType: 'changeProject' });
  108. }
  109. }
  110. }
  111. const auditChangeApply = await DashboardStats.auditSet(ctx, allAuditChangeApply, subProjects, dashboardStatus, 'changeApply');
  112. for (const item of auditChangeApply) {
  113. let sp = null;
  114. if (item.spid) {
  115. if (ctx.helper._.findIndex(subProjects, { id: item.spid }) !== -1) {
  116. sp = ctx.helper._.find(subProjects, { id: item.spid });
  117. } else {
  118. sp = await ctx.service.subProject.getDataById(item.spid);
  119. subProjects.push(sp);
  120. }
  121. }
  122. if (sp && sp.page_show) {
  123. if (sp.page_show.openChangeApply) {
  124. dashboardShenpis.push({ ...item, type: 'change', subType: 'changeApply' });
  125. }
  126. }
  127. }
  128. const auditChangePlan = await DashboardStats.auditSet(ctx, allAuditChangePlan, subProjects, dashboardStatus, 'changePlan');
  129. for (const item of auditChangePlan) {
  130. let sp = null;
  131. if (item.spid) {
  132. if (ctx.helper._.findIndex(subProjects, { id: item.spid }) !== -1) {
  133. sp = ctx.helper._.find(subProjects, { id: item.spid });
  134. } else {
  135. sp = await ctx.service.subProject.getDataById(item.spid);
  136. subProjects.push(sp);
  137. }
  138. }
  139. if (sp && sp.page_show) {
  140. if (sp.page_show.openChangePlan) {
  141. dashboardShenpis.push({ ...item, type: 'change', subType: 'changePlan' });
  142. }
  143. }
  144. }
  145. // const auditPayments = await DashboardStats.auditSet(ctx, allAuditPayments, subProjects, dashboardStatus, 'payment');
  146. // dashboardShenpis.push(...auditPayments);
  147. // const auditStageAss = await DashboardStats.auditSet(ctx, allAuditStageAss, subProjects, dashboardStatus, 'stageAss');
  148. // dashboardShenpis.push(...auditStageAss);
  149. // const auditFinancials = await DashboardStats.auditSet(ctx, allAuditFinancials, subProjects, dashboardStatus, 'financial');
  150. // dashboardShenpis.push(...auditFinancials);
  151. // const auditInspections = await DashboardStats.auditSet(ctx, allAuditInspections, subProjects, dashboardStatus, 'inspection');
  152. // dashboardShenpis.push(...auditInspections);
  153. // const auditQualityInspections = await DashboardStats.auditSet(ctx, allAuditQualityInspections, subProjects, dashboardStatus, 'inspection');
  154. // dashboardShenpis.push(...(auditQualityInspections.map(item => ({ ...item, type: 'qualityInspection', subType: 'qualityInspection' }))));
  155. // const auditSafeInspections = await DashboardStats.auditSet(ctx, allAuditSafeInspections, subProjects, dashboardStatus, 'safeInspection');
  156. // dashboardShenpis.push(...(auditSafeInspections.map(item => ({ ...item, type: 'safeInspection', subType: 'safeInspection' }))));
  157. // const auditPhasePay = await DashboardStats.auditSet(ctx, allAuditPhasePay, subProjects, dashboardStatus, 'phasePay');
  158. // dashboardShenpis.push(...auditPhasePay);
  159. const renderData = {
  160. code: 0,
  161. msg: '获取成功',
  162. data: {
  163. dashboardShenpis: ctx.helper._.orderBy(dashboardShenpis, ['start_audit', 'shenpi_time'], ['desc', 'asc']),
  164. dashboardStatus: {
  165. all: dashboardStatus.all,
  166. dashboard: dashboardStatus.dashboard,
  167. worry: dashboardStatus.worry,
  168. early: dashboardStatus.early,
  169. },
  170. },
  171. };
  172. ctx.body = renderData;
  173. } catch (error) {
  174. this.log(error);
  175. ctx.body = { code: -1, msg: error.toString(), data: null };
  176. }
  177. }
  178. }
  179. return WeappDashboardController;
  180. };