weapp_subp_controller.js 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. 'use strict';
  2. /**
  3. * weapp控制器
  4. *
  5. * @author Lan
  6. * @date 2025/12/22
  7. * @version
  8. */
  9. const DashboardStats = require('../lib/dashboard_stats');
  10. module.exports = app => {
  11. class WeappSubpController extends app.BaseController {
  12. async subProjectList(ctx) {
  13. try {
  14. const list = await ctx.service.subProject.getSubProject(ctx.session.sessionProject.id, ctx.session.sessionUser.id, ctx.session.sessionUser.is_admin);
  15. ctx.body = {
  16. code: 0, msg: '', data: {
  17. list,
  18. },
  19. };
  20. } catch (error) {
  21. this.log(error);
  22. ctx.body = { code: -1, msg: '', data: null };
  23. }
  24. }
  25. async subProjectDetail(ctx) {
  26. try {
  27. const { id: subProjectId } = ctx.query;
  28. if (!subProjectId) {
  29. ctx.body = { code: -1, msg: '子项目ID不能为空', data: null };
  30. return;
  31. }
  32. const subProject = await ctx.service.subProject.getDataById(subProjectId);
  33. if (!subProject) {
  34. ctx.body = { code: -1, msg: '子项目不存在', data: null };
  35. return;
  36. }
  37. const pageShow = ctx.service.subProject.getPageShow(subProject.page_show);
  38. const auditList = [];
  39. // 获取待审批的计量期列表
  40. const auditStages = await ctx.service.stageAudit.getAuditStageByWap(ctx.session.sessionUser.id, subProjectId);
  41. auditList.push(...(auditStages.map(item => ({ ...item, type: 'stage', subType: 'stage' }))));
  42. // 获取待审批的变更期
  43. const auditChanges = await ctx.service.changeAudit.getAuditChangeByWap(ctx.session.sessionUser.id, subProjectId);
  44. auditList.push(...(auditChanges.map(item => ({ ...item, type: 'change', subType: 'change' }))));
  45. // 获取待审批的变更立项
  46. if (pageShow.openChangeProject) {
  47. const changeProjects = await ctx.service.changeProjectAudit.getAuditChangeProjectByWap(ctx.session.sessionUser.id, subProjectId);
  48. auditList.push(...(changeProjects.map(item => ({ ...item, type: 'change', subType: 'changeProject' }))));
  49. }
  50. // 获取待审批的变更申请
  51. if (pageShow.openChangeApply) {
  52. const changeApplys = await ctx.service.changeApplyAudit.getAuditChangeApplyByWap(ctx.session.sessionUser.id, subProjectId);
  53. auditList.push(...(changeApplys.map(item => ({ ...item, type: 'change', subType: 'changeApply' }))));
  54. }
  55. // 获取待审批的变更方案
  56. if (pageShow.openChangePlan) {
  57. const changePlans = await ctx.service.changePlanAudit.getAuditChangePlanByWap(ctx.session.sessionUser.id, subProjectId);
  58. auditList.push(...(changePlans.map(item => ({ ...item, type: 'change', subType: 'changePlan' }))));
  59. }
  60. // 获取待审批的台账修订
  61. const ledgerRevises = await ctx.service.reviseAudit.getAuditReviseByWap(ctx.session.sessionUser.id, subProjectId);
  62. auditList.push(...(ledgerRevises.map(item => ({ ...item, type: 'revise', subType: 'revise', name: item.t_name, tid: item.t_id }))));
  63. // 获取待审批的预付款
  64. const auditAdvance = await ctx.service.advanceAudit.getAuditAdvanceByWap(ctx.session.sessionUser.id, subProjectId);
  65. auditList.push(...(auditAdvance.map(item => ({ ...item, type: 'advance', subType: 'advance' }))));
  66. // 获取待审批的材料调差
  67. if (pageShow.openMaterial) {
  68. const materialList = await ctx.service.materialAudit.getAuditMaterialByWap(ctx.session.sessionUser.id, subProjectId);
  69. auditList.push(...(materialList.map(item => ({ ...item, type: 'material', subType: 'material' }))));
  70. }
  71. // 获取待审批的质量巡检单
  72. // if (pageShow.qualityInspection) {
  73. // const qualityInspectionList = await ctx.service.qualityInspectionAudit.getAuditInspectionByWap(ctx.session.sessionUser.id, subProjectId);
  74. // auditList.push(...(qualityInspectionList.map(item => ({ ...item, type: 'qualityInspection', subType: 'qualityInspection' }))));
  75. // }
  76. // // 获取待审批的安全巡检
  77. // if (pageShow.safeInspection) {
  78. // const safeInspectionList = await ctx.service.safeInspectionAudit.getAuditInspectionByWap(ctx.session.sessionUser.id, subProjectId);
  79. // auditList.push(...(safeInspectionList.map(item => ({ ...item, type: 'safeInspection', subType: 'safeInspection' }))));
  80. // }
  81. // 与主页复用审批计时和预警阈值,避免前后端分别计算产生差异。
  82. const dashboardStatus = { dashboard: 0, worry: 0, early: 0, shenpi: {} };
  83. const pendingAudits = [];
  84. const auditGroups = ctx.helper._.groupBy(auditList, 'subType');
  85. for (const subType of Object.keys(auditGroups)) {
  86. dashboardStatus.shenpi[subType] = 0;
  87. const audits = await DashboardStats.auditSet(
  88. ctx,
  89. auditGroups[subType],
  90. [{ ...subProject, page_show: pageShow }],
  91. dashboardStatus,
  92. subType
  93. );
  94. pendingAudits.push(...audits);
  95. }
  96. // 获取消息列表
  97. const msgList = await ctx.service.message.getMsgList(ctx.session.sessionProject.id, subProjectId, 1);
  98. ctx.body = {
  99. code: 0, msg: '', data: {
  100. auditList: ctx.helper._.orderBy(pendingAudits, ['start_audit', 'shenpi_time'], ['desc', 'asc']),
  101. msgList,
  102. },
  103. };
  104. } catch (error) {
  105. this.log(error);
  106. ctx.body = { code: -1, msg: '', data: null };
  107. }
  108. }
  109. }
  110. return WeappSubpController;
  111. };