bills_controller.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. /**
  2. * Created by jimiz on 2017/4/7.
  3. */
  4. var billsData = require('../models/bills');
  5. let ProjectsData = require('../../pm/models/project_model').project;
  6. let logger = require("../../../logs/log_helper").logger;
  7. //统一回调函数
  8. var callback = function(req, res, err, message, data){
  9. res.json({error: err, message: message, data: data});
  10. };
  11. module.exports = {
  12. getData: function(req, res){
  13. var data = JSON.parse(req.body.data);
  14. billsData.getData(data.projectId, function(err, message, billsList){
  15. if (err === 0) {
  16. callback(req, res, err, message, billsList);
  17. } else {
  18. callback(req, res, err, message, null);
  19. }
  20. });
  21. },
  22. getItemTemplate: function(req, res){
  23. //var data = JSON.parse(req.body.data);
  24. billsData.getItemTemplate(function(err, message, billsItem){
  25. if (billsItem) {
  26. callback(req, res, err, message, billsItem);
  27. } else {
  28. callback(req, res, err, message, null);
  29. }
  30. });
  31. },
  32. allocIDs: function(req, res){
  33. billsData.allocIDs(function(err, message, data){
  34. if (err) {
  35. callback(req, res, err, message, data);
  36. } else {
  37. callback(req, res, err, message, null);
  38. }
  39. });
  40. },
  41. //zhong 2017-9-1
  42. updateCharacterContent: function (req, res) {
  43. let data = JSON.parse(req.body.data);
  44. let findSet = data.findSet,
  45. updateObj = data.updateObj,
  46. txtObj = data.txtObj;
  47. billsData.updateCharacterContent(findSet, updateObj, txtObj, function (err, message) {
  48. callback(req, res, err, message, null);
  49. });
  50. },
  51. updateBill: async function(request, response) {
  52. const data = JSON.parse(request.body.data);
  53. const findSet = data.findSet;
  54. const updateData = data.updateData;
  55. let settingData = {};
  56. // 筛选出要保存在项目属性的设置
  57. for (const index in updateData) {
  58. if (updateData[index].field === 'addRule') {
  59. settingData = updateData[index].value;
  60. delete updateData[index];
  61. }
  62. }
  63. // 更新项目属性
  64. const propertyUpdateData = {
  65. property: 'addRule',
  66. data: settingData
  67. };
  68. const projectResult = await ProjectsData.updateProjectProperty(findSet.projectID, propertyUpdateData);
  69. const result = await billsData.updateBill(findSet, updateData);
  70. const message = !result || !projectResult ? '修改失败' : '修改成功';
  71. const err = !result || !projectResult ? 1 : 0;
  72. callback(request, response, err, message, null);
  73. },
  74. singleDelete:async function(req, res){
  75. let result={
  76. error:0
  77. }
  78. try {
  79. let data = req.body.data;
  80. data = JSON.parse(data);
  81. let tasks = generateSingleDeleteTasks(data);
  82. let resultData= await billsData.model.bulkWrite(tasks);
  83. result.data=resultData;
  84. }catch (err){
  85. logger.err(err);
  86. result.error=1;
  87. result.message = err.message;
  88. }
  89. res.json(result);
  90. }
  91. };
  92. function generateSingleDeleteTasks(data) {
  93. let tasks=[];
  94. let updateData = data.updateData;
  95. for(let key in updateData){
  96. if(updateData[key]==true){
  97. let deleteInfo={deleted: true, deleteDateTime: new Date(), deleteBy: data.user_id};
  98. let task={
  99. updateOne:{
  100. filter:{
  101. ID:key,
  102. projectID:data.projectID
  103. },
  104. update:{
  105. deleteInfo:deleteInfo
  106. }
  107. }
  108. };
  109. tasks.push(task);
  110. }else {
  111. let task={
  112. updateOne:{
  113. filter:{
  114. ID:key,
  115. projectID:data.projectID
  116. },
  117. update:updateData[key]
  118. }
  119. };
  120. tasks.push(task);
  121. }
  122. }
  123. return tasks;
  124. }