weapp_dashboard_controller.js 12 KB

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