unit_price_controller.js 4.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. let mongoose = require("mongoose")
  2. let logger = require("../../../logs/log_helper").logger;
  3. let config = require("../../../config/config.js");
  4. let unitPriceFileModel = mongoose.model('unit_price_file');
  5. let projectModel = mongoose.model('projects');
  6. const ProjectDao = require('../../pm/models/project_model').project;
  7. let unitPriceModel = mongoose.model('unit_price');
  8. let mixRatioModel = mongoose.model('mix_ratio');
  9. let com_electrovalence_model = mongoose.model('com_electrovalence');
  10. let glj_type_util = require('../../../public/cache/std_glj_type_util');
  11. let ration_facade = require('../../main/facade/ration_facade');
  12. let commonFacade = require('../../main/facade/common_facade');
  13. let _ = require("lodash");
  14. module.exports={
  15. index:async function(req,res){
  16. let unitPriceFileID = req.params.unitPriceFileID;
  17. let unitPriceFile = await unitPriceFileModel.findOne({id:unitPriceFileID}).lean();
  18. let project = await projectModel.findOne({ID:unitPriceFile.root_project_id}).lean();
  19. let tenderData = await ProjectDao.getTenderByUnitPriceFileId(unitPriceFileID);
  20. let unitpriceList = await unitPriceModel.find({unit_price_file_id:unitPriceFileID},{supplyLocation:0}).lean();
  21. let mixRatioList = await mixRatioModel.find({unit_price_file_id:unitPriceFileID}).lean();
  22. let mixRatioMap = _.groupBy(mixRatioList,"connect_key");
  23. let com_electrovalence = await com_electrovalence_model.findOne({"unit_price_file_id":unitPriceFileID}).lean();
  24. let projectID = null;
  25. let gljTypeMap = glj_type_util.getStdGljTypeCacheObj().innerGljTypeObj;
  26. let usedTenderList = [];
  27. if (tenderData !== null && tenderData.length > 0) {
  28. for (let tmp of tenderData) {
  29. usedTenderList.push(tmp.name);
  30. }
  31. projectID = tenderData[0].ID;
  32. }
  33. let usedTenderString = "人材机单价的变化,将自动影响以下单位工程造价:<br>"+usedTenderList.join("<br>");
  34. res.render('building_saas/unit_price_file/index.html',
  35. {
  36. userAccount: req.session.userAccount,
  37. userID: req.session.sessionUser.id,
  38. unitPriceFileID:unitPriceFileID,
  39. projectID:projectID,
  40. versionName: req.session.compilationVersion,
  41. unitFileName:unitPriceFile.name,
  42. rootProjectName:project.name,
  43. usedTenderList:JSON.stringify(usedTenderList),
  44. usedTenderString:usedTenderString,
  45. unitpriceList:JSON.stringify(unitpriceList),
  46. gljTypeMap:JSON.stringify(gljTypeMap),
  47. mixRatioMap:JSON.stringify(mixRatioMap),
  48. com_electrovalence:JSON.stringify(com_electrovalence),
  49. socketPort:config[process.env.NODE_ENV].socketPort?config[process.env.NODE_ENV].socketPort:5500,
  50. LicenseKey:config.getLicenseKey(process.env.NODE_ENV),
  51. title:config[process.env.NODE_ENV].title?config[process.env.NODE_ENV].title:"纵横公路养护云造价"
  52. });
  53. },
  54. addMixRatio:async function(req,res){
  55. let result={
  56. error:0
  57. };
  58. try {
  59. let data = req.body.data;
  60. data = JSON.parse(data);
  61. let gljList = data.gljList, parentInfo = data.parentInfo,mixRatios = [],gljCodes=[];
  62. if(gljList.length > 0){
  63. for(let newProjectGLJ of gljList){
  64. let mixRatio = {
  65. glj_id:newProjectGLJ.glj_id,
  66. consumption:0,
  67. unit_price_file_id:parentInfo.unit_price_file_id,
  68. connect_key:parentInfo.connect_key,
  69. type: newProjectGLJ.type,
  70. code: newProjectGLJ.code,
  71. specs:newProjectGLJ.specs,
  72. name:newProjectGLJ.name,
  73. unit:newProjectGLJ.unit,
  74. model:newProjectGLJ.model
  75. };
  76. mixRatios.push(mixRatio);
  77. gljCodes.push(newProjectGLJ.code);
  78. }
  79. let [unitPriceMap,newUnitPriceList] = await ration_facade.getUnitPriceData(gljList,gljCodes,parentInfo.unit_price_file_id);
  80. await commonFacade.setIDfromCounter("mix_ratio",mixRatios);
  81. await mixRatioModel.insertMany(mixRatios);
  82. result.data = {mixRatios:mixRatios,newUnitPriceList:newUnitPriceList};
  83. }
  84. }catch (err){
  85. logger.err(err);
  86. result.error=1;
  87. result.message = err.message;
  88. }
  89. res.json(result);
  90. }
  91. }
  92. // engineerID = req.params.engineerID;