ration_controller.js 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. /**
  2. * Created by jimiz on 2017/4/9.
  3. */
  4. let rationData = require('../models/ration');
  5. let ration_glj_facade = require('../../ration_glj/facade/ration_glj_facade');
  6. let ration_ass_facade = require('../../ration_glj/facade/ration_ass_facade');
  7. let ration_facade = require('../facade/ration_facade');
  8. let bill_facade = require('../facade/bill_facade');
  9. let project_facade = require("../facade/project_facade");
  10. let logger = require("../../../logs/log_helper").logger;
  11. let controller = {
  12. insertGLJAsRation:async function (req){
  13. let data = req.body.data;
  14. data = JSON.parse(data);
  15. return await ration_glj_facade.insertGLJAsRation(data,req.session.sessionCompilation);
  16. },
  17. replaceRations:async function (req) {
  18. let data = req.body.data;
  19. data = JSON.parse(data);
  20. let userID = req.session.sessionUser.id;
  21. return await ration_facade.replaceRations(userID,data,req.session.sessionCompilation);
  22. },
  23. addNewRation:async function(req) {
  24. let data = req.body.data;
  25. if(typeof data === 'object'){
  26. data = JSON.stringify(data);
  27. }
  28. data = JSON.parse(data);
  29. return await ration_facade.addNewRation(data,req.session.sessionCompilation);
  30. },
  31. addMultiRation: async function (req) {
  32. let data = req.body.data;
  33. if(typeof data === 'object'){
  34. data = JSON.stringify(data);
  35. }
  36. data = JSON.parse(data);
  37. return await ration_facade.addMultiRation(data.newDatas,req.session.sessionCompilation);
  38. },
  39. getSameSectionRations:async function(req){//取同个章节相邻的定额
  40. let data = req.body.data;
  41. data = JSON.parse(data);
  42. return await ration_facade.getSameSectionRations(data,req.session.sessionUser.id, req.session.sessionCompilation._id);
  43. },
  44. //取定额默认的取费专业
  45. getDefaultProgramID:async function(req){
  46. let data = req.body.data;
  47. data = JSON.parse(data);
  48. data.userID = req.session.sessionUser.id;
  49. data.compilationId = req.session.sessionCompilation._id;
  50. return await ration_facade.getDefaultProgramID(data);
  51. },
  52. //应用定额关联子目
  53. applyTemplate:async function(req){
  54. let data = req.body.data;
  55. data = JSON.parse(data);
  56. let updateDatas =[];
  57. let applyTasks = [
  58. ration_facade.addMultiRation(data.rations.create,req.session.sessionCompilation),//先生成新定额
  59. bill_facade.createNewBills(data.bills.create),
  60. ];
  61. //整理更新的数据,调用一个方法更新
  62. updateDatas.push(data.ration_template);
  63. if(data.rations.update.length > 0) prepareUpdateNodes(data.rations.update,updateDatas,"ration");
  64. if(data.bills.update.length > 0) prepareUpdateNodes(data.bills.update,updateDatas,"bills");
  65. applyTasks.push(project_facade.updateNodes(updateDatas));
  66. let [rationResult,billsResult,updates] = await Promise.all(applyTasks);
  67. return {rationResult:rationResult,billsResult:billsResult,updateDatas:updateDatas};
  68. },
  69. //更新辅助定额
  70. updateRationAss:async function(req){
  71. let data = req.body.data;
  72. data = JSON.parse(data);
  73. return ration_ass_facade.updateRationAss(data);
  74. },
  75. //勾选定额调整系数
  76. updateCoeAdjust:async function(req){
  77. let data = req.body.data;
  78. data = JSON.parse(data);
  79. return await ration_facade.updateCoeAdjust(data,req.session.sessionCompilation);
  80. }
  81. };
  82. function prepareUpdateNodes(datas,nodes,type) {
  83. for(let d of datas){
  84. nodes.push({type:type,data:d});
  85. }
  86. }
  87. //统一回调函数
  88. let callback = function(req, res, err, message, data){
  89. res.json({error: err, message: message, data: data});
  90. };
  91. module.exports = {
  92. getData: function(req, res){
  93. var data = JSON.parse(req.body.data);
  94. rationData.getData(data.projectId, function(err, message, rationList){
  95. if (err === 0) {
  96. callback(req, res, err, message, rationList);
  97. } else {
  98. callback(req, res, err, message, null);
  99. }
  100. });
  101. },
  102. getItemTemplate: function(req, res){
  103. //var data = JSON.parse(req.body.data);
  104. rationData.getItemTemplate(function(err, message, rationItem){
  105. if (billsItem) {
  106. callback(req, res, err, message, rationItem);
  107. } else {
  108. callback(req, res, err, message, null);
  109. }
  110. });
  111. },
  112. allocIDs: function(req, res){
  113. rationData.allocIDs(function(err, message, data){
  114. if (err) {
  115. callback(req, res, err, message, data);
  116. } else {
  117. callback(req, res, err, message, null);
  118. }
  119. });
  120. },
  121. action:async function(req,res){//自动跳转到URL对应的controller方法
  122. let result={
  123. error:0
  124. }
  125. try {
  126. let functionName = req.url.replace(/\//g,"");
  127. result.data = controller[functionName]?await controller[functionName](req):"";
  128. }catch (err){
  129. logger.err(err);
  130. result.error=1;
  131. result.message = err.message;
  132. }
  133. res.json(result);
  134. }
  135. };