ration_controller.js 4.7 KB

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