weapp_dashboard_controller.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  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. const accountInfo = await ctx.service.projectAccount.getDataById(ctx.session.sessionUser.accountId);
  57. const userPermission = accountInfo !== undefined && accountInfo.permission !== '' ? JSON.parse(accountInfo.permission) : null;
  58. let tendersCount = 0;
  59. for (const subProject of subProjects) {
  60. subProject.page_show = ctx.service.subProject.getPageShow(subProject.page_show);
  61. if (tendersCount < 99) {
  62. const subProjectTenders = await ctx.service.tender.getList('', userPermission, ctx.session.sessionUser.is_admin, '', subProject);
  63. tendersCount += subProjectTenders.length;
  64. }
  65. }
  66. const dashboardShenpis = [];
  67. const auditTenders = await DashboardStats.auditSet(ctx, allAuditTenders, subProjects, dashboardStatus, 'ledger');
  68. dashboardShenpis.push(...(auditTenders.map(item => ({ ...item, type: 'ledger', subType: 'ledger' }))));
  69. const auditStages = await DashboardStats.auditSet(ctx, allAuditStages, subProjects, dashboardStatus, 'stage');
  70. dashboardShenpis.push(...(auditStages.map(item => ({ ...item, type: 'stage', subType: 'stage' }))));
  71. const auditChanges = await DashboardStats.auditSet(ctx, allAuditChanges, subProjects, dashboardStatus, 'change');
  72. for (const item of auditChanges) {
  73. let sp = null;
  74. if (item.spid) {
  75. if (ctx.helper._.findIndex(subProjects, { id: item.spid }) !== -1) {
  76. sp = ctx.helper._.find(subProjects, { id: item.spid });
  77. } else {
  78. sp = await ctx.service.subProject.getDataById(item.spid);
  79. subProjects.push(sp);
  80. }
  81. }
  82. if (sp && sp.page_show) {
  83. if (sp.page_show.openChangeProject) {
  84. dashboardShenpis.push({ ...item, type: 'change', subType: 'change' });
  85. }
  86. }
  87. }
  88. const auditRevise = await DashboardStats.auditSet(ctx, allAuditRevise, subProjects, dashboardStatus, 'revise');
  89. dashboardShenpis.push(...(auditRevise.map(item => ({ ...item, type: 'revise', subType: 'revise' }))));
  90. const auditMaterial = await DashboardStats.auditSet(ctx, allAuditMaterial, subProjects, dashboardStatus, 'material');
  91. for (const item of auditMaterial) {
  92. let sp = null;
  93. if (item.spid) {
  94. if (ctx.helper._.findIndex(subProjects, { id: item.spid }) !== -1) {
  95. sp = ctx.helper._.find(subProjects, { id: item.spid });
  96. } else {
  97. sp = await ctx.service.subProject.getDataById(item.spid);
  98. subProjects.push(sp);
  99. }
  100. }
  101. if (sp && sp.page_show) {
  102. if (sp.page_show.openMaterial) {
  103. dashboardShenpis.push({ ...item, type: 'material', subType: 'material' });
  104. }
  105. }
  106. }
  107. const auditAdvance = await DashboardStats.auditSet(ctx, allAuditAdvance, subProjects, dashboardStatus, 'advance');
  108. dashboardShenpis.push(...(auditAdvance.map(item => ({ ...item, type: 'advance', subType: 'advance' }))));
  109. const auditChangeProject = await DashboardStats.auditSet(ctx, allAuditChangeProject, subProjects, dashboardStatus, 'changeProject');
  110. for (const item of auditChangeProject) {
  111. let sp = null;
  112. if (item.spid) {
  113. if (ctx.helper._.findIndex(subProjects, { id: item.spid }) !== -1) {
  114. sp = ctx.helper._.find(subProjects, { id: item.spid });
  115. } else {
  116. sp = await ctx.service.subProject.getDataById(item.spid);
  117. subProjects.push(sp);
  118. }
  119. }
  120. if (sp && sp.page_show) {
  121. if (sp.page_show.openChangeProject) {
  122. dashboardShenpis.push({ ...item, type: 'change', subType: 'changeProject' });
  123. }
  124. }
  125. }
  126. const auditChangeApply = await DashboardStats.auditSet(ctx, allAuditChangeApply, subProjects, dashboardStatus, 'changeApply');
  127. for (const item of auditChangeApply) {
  128. let sp = null;
  129. if (item.spid) {
  130. if (ctx.helper._.findIndex(subProjects, { id: item.spid }) !== -1) {
  131. sp = ctx.helper._.find(subProjects, { id: item.spid });
  132. } else {
  133. sp = await ctx.service.subProject.getDataById(item.spid);
  134. subProjects.push(sp);
  135. }
  136. }
  137. if (sp && sp.page_show) {
  138. if (sp.page_show.openChangeApply) {
  139. dashboardShenpis.push({ ...item, type: 'change', subType: 'changeApply' });
  140. }
  141. }
  142. }
  143. const auditChangePlan = await DashboardStats.auditSet(ctx, allAuditChangePlan, subProjects, dashboardStatus, 'changePlan');
  144. for (const item of auditChangePlan) {
  145. let sp = null;
  146. if (item.spid) {
  147. if (ctx.helper._.findIndex(subProjects, { id: item.spid }) !== -1) {
  148. sp = ctx.helper._.find(subProjects, { id: item.spid });
  149. } else {
  150. sp = await ctx.service.subProject.getDataById(item.spid);
  151. subProjects.push(sp);
  152. }
  153. }
  154. if (sp && sp.page_show) {
  155. if (sp.page_show.openChangePlan) {
  156. dashboardShenpis.push({ ...item, type: 'change', subType: 'changePlan' });
  157. }
  158. }
  159. }
  160. // const auditPayments = await DashboardStats.auditSet(ctx, allAuditPayments, subProjects, dashboardStatus, 'payment');
  161. // dashboardShenpis.push(...auditPayments);
  162. // const auditStageAss = await DashboardStats.auditSet(ctx, allAuditStageAss, subProjects, dashboardStatus, 'stageAss');
  163. // dashboardShenpis.push(...auditStageAss);
  164. // const auditFinancials = await DashboardStats.auditSet(ctx, allAuditFinancials, subProjects, dashboardStatus, 'financial');
  165. // dashboardShenpis.push(...auditFinancials);
  166. // const auditInspections = await DashboardStats.auditSet(ctx, allAuditInspections, subProjects, dashboardStatus, 'inspection');
  167. // dashboardShenpis.push(...auditInspections);
  168. // const auditQualityInspections = await DashboardStats.auditSet(ctx, allAuditQualityInspections, subProjects, dashboardStatus, 'inspection');
  169. // dashboardShenpis.push(...(auditQualityInspections.map(item => ({ ...item, type: 'qualityInspection', subType: 'qualityInspection' }))));
  170. // const auditSafeInspections = await DashboardStats.auditSet(ctx, allAuditSafeInspections, subProjects, dashboardStatus, 'safeInspection');
  171. // dashboardShenpis.push(...(auditSafeInspections.map(item => ({ ...item, type: 'safeInspection', subType: 'safeInspection' }))));
  172. // const auditPhasePay = await DashboardStats.auditSet(ctx, allAuditPhasePay, subProjects, dashboardStatus, 'phasePay');
  173. // dashboardShenpis.push(...auditPhasePay);
  174. const renderData = {
  175. code: 0,
  176. msg: '获取成功',
  177. data: {
  178. dashboardShenpis: ctx.helper._.orderBy(dashboardShenpis, ['start_audit', 'shenpi_time'], ['desc', 'asc']),
  179. dashboardStatus: {
  180. all: tendersCount,
  181. dashboard: dashboardStatus.dashboard,
  182. worry: dashboardStatus.worry,
  183. early: dashboardStatus.early,
  184. },
  185. },
  186. };
  187. ctx.body = renderData;
  188. } catch (error) {
  189. this.log(error);
  190. ctx.body = { code: -1, msg: error.toString(), data: null };
  191. }
  192. }
  193. }
  194. return WeappDashboardController;
  195. };