compleViewController.js 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. /**
  2. * Created by Zhong on 2017/12/22.
  3. */
  4. const BaseController = require('../../common/base/base_controller');
  5. const CompleViewModel = require('../models/compleViewModel');
  6. const EngineeringLibModel = require("../../users/models/engineering_lib_model");
  7. let config = require("../../../config/config.js");
  8. let compleViewModel = new CompleViewModel();
  9. const CompleRationDao = require('../models/compleRationModel');
  10. const compleRationDao = new CompleRationDao();
  11. const pmFacade = require('../../pm/facade/pm_facade');
  12. const { ShareLibType } = require('../../../public/common_constants');
  13. const getValuationBasisURL = require('../../common/const/valuationBasis');
  14. let callback = function (req, res, err, msg, data) {
  15. res.json({error: err, message: msg, data: data});
  16. };
  17. async function getGljLibId(sessionCompilation) {
  18. let gljLibId = null,
  19. rationValuation = sessionCompilation.ration_valuation,
  20. billValuation = sessionCompilation.bill_valuation,
  21. engineeringLibModel = new EngineeringLibModel(),
  22. valuationIDs = [] ;
  23. for(let r of rationValuation){//{ "glj_lib.0": {$exists:1} }
  24. if(r.id){
  25. valuationIDs.push(r.id);
  26. }
  27. }
  28. for(let b of billValuation){
  29. if(b.id){
  30. valuationIDs.push(b.id);
  31. }
  32. }
  33. if(valuationIDs.length > 0){
  34. let engineeringInfo = await engineeringLibModel.findDataByCondition({'valuationID': {"$in": valuationIDs},"glj_lib.0": {$exists:1}});//数组大于0
  35. gljLibId = engineeringInfo.glj_lib.length > 0 && typeof engineeringInfo.glj_lib !== 'undefined' ? engineeringInfo.glj_lib[0].id : null;
  36. }
  37. return gljLibId;
  38. }
  39. class CompleViewController extends BaseController{
  40. async redirectRation(req, res){
  41. const { userID } = req.params;
  42. const sessionUserID = req.session.sessionUser.id;
  43. const compilationID = req.session.sessionCompilation._id;
  44. if (userID !== sessionUserID) {
  45. const receiveList = await pmFacade.getReceiveLibList(sessionUserID, compilationID, ShareLibType.RATION_LIB);
  46. const isValid = !!receiveList.find(user => String(user._id) === userID);
  47. if (!isValid) {
  48. return res.redirect(`/complementaryRation/ration/${sessionUserID}`);
  49. }
  50. }
  51. const gljLibId = await getGljLibId(req.session.sessionCompilation);
  52. const redirectGlj = `/complementaryRation/glj/${userID}`;
  53. const redirectCoe = `/complementaryRation/coe/${userID}`;
  54. const redirectInstallation = `/complementaryRation/installation/${userID}`;
  55. const priceProperties = req.session.sessionCompilation.priceProperties || [];
  56. const isReadOnly = userID !== sessionUserID;
  57. res.render('building_saas/complementary_ration_lib/html/dinge.html', {
  58. isReadOnly,
  59. userID: sessionUserID,
  60. redirectGlj: redirectGlj,
  61. redirectCoe: redirectCoe,
  62. redirectInstallation: redirectInstallation,
  63. gljLibId: gljLibId,
  64. compilationName: req.session.sessionCompilation.name,
  65. valuationBasisURL: getValuationBasisURL(req.session.sessionCompilation.name),
  66. priceProperties: JSON.stringify(priceProperties),
  67. versionName: req.session.compilationVersion,
  68. LicenseKey:config.getLicenseKey(process.env.NODE_ENV)
  69. });
  70. }
  71. async prepareInitData (req, res) {
  72. try {
  73. const { userID } = req.query;
  74. const sessionUserID = req.session.sessionUser.id;
  75. const gljLibId = await getGljLibId(req.session.sessionCompilation);
  76. const compilationId = req.session.sessionCompilation._id;
  77. const initData = await compleRationDao.prepareInitData(sessionUserID, userID, compilationId, gljLibId);
  78. res.json({error: 0, message: 'success', data: initData});
  79. } catch (err) {
  80. res.json({error: 1, message: 'fail', data: null});
  81. }
  82. }
  83. async redirectGljList(req, res){
  84. const { userID } = req.params;
  85. const gljLibId = await getGljLibId(req.session.sessionCompilation);
  86. const redirectRation = `/complementaryRation/ration/${userID}`;
  87. const redirectCoe = `/complementaryRation/coe/${userID}`;
  88. const redirectInstallation = `/complementaryRation/installation/${userID}`;
  89. res.render('building_saas/complementary_ration_lib/html/gongliao.html', {
  90. userID: req.session.sessionUser.id,
  91. redirectRation: redirectRation,
  92. redirectCoe: redirectCoe,
  93. redirectInstallation: redirectInstallation,
  94. gljLibId: gljLibId,
  95. compilationName: req.session.sessionCompilation.name,
  96. valuationBasisURL: getValuationBasisURL(req.session.sessionCompilation.name),
  97. versionName: req.session.compilationVersion,
  98. LicenseKey:config.getLicenseKey(process.env.NODE_ENV)
  99. });
  100. }
  101. async redirectCoeList(req, res){
  102. const gljLibId = await getGljLibId(req.session.sessionCompilation);
  103. const redirectRation = `/complementaryRation/ration/${userID}`;
  104. const redirectGlj = `/complementaryRation/glj/${userID}`;
  105. const redirectInstallation = `/complementaryRation/installation/${userID}`;
  106. res.render('building_saas/complementary_ration_lib/html/fuzhu.html', {
  107. userID: req.session.sessionUser.id,
  108. redirectRation: redirectRation,
  109. redirectGlj: redirectGlj,
  110. redirectInstallation: redirectInstallation,
  111. gljLibId: gljLibId,
  112. compilationName: req.session.sessionCompilation.name,
  113. valuationBasisURL: getValuationBasisURL(req.session.sessionCompilation.name),
  114. versionName: req.session.compilationVersion,
  115. LicenseKey:config.getLicenseKey(process.env.NODE_ENV)
  116. });
  117. }
  118. redirectInstallation(req, res){
  119. const repId = req.query.repository;
  120. const redirectRation = `/complementaryRation/ration/${userID}`;
  121. const redirectGlj = `/complementaryRation/glj?repository=${repId}/${userID}`;
  122. const redirectCoe = `/complementaryRation/coe?repository=${repId}/${userID}`;
  123. res.render('building_saas/complementary_ration_lib/html/anzhuang.html', {
  124. userID: req.session.sessionUser.id,
  125. redirectRation: redirectRation,
  126. redirectGlj: redirectGlj,
  127. redirectCoe: redirectCoe,
  128. compilationName: req.session.sessionCompilation.name,
  129. valuationBasisURL: getValuationBasisURL(req.session.sessionCompilation.name),
  130. versionName: req.session.compilationVersion,
  131. LicenseKey:config.getLicenseKey(process.env.NODE_ENV)
  132. });
  133. }
  134. getRationLib(req, res){
  135. let data = JSON.parse(req.body.data);
  136. compleViewModel.getRationLib(data.rationRepId, function (err, data) {
  137. callback(req, res, err, '', data);
  138. });
  139. }
  140. getRationLibs(req, res){
  141. let data = JSON.parse(req.body.data);
  142. compleViewModel.getRationLibs(req.session.sessionCompilation._id, data.ids, function (err, data) {
  143. callback(req, res, err, '', data);
  144. });
  145. }
  146. }
  147. module.exports = CompleViewController;