index.js 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import BaseController from "../../common/base/base_controller";
  2. const facade = require('../facade/index');
  3. const config = require("../../../config/config.js");
  4. const excel = require('node-xlsx');
  5. const fs = require('fs');
  6. class PriceInfoSummaryController extends BaseController {
  7. async main(req, res) {
  8. const renderData = {
  9. title: '材料信息价总表',
  10. userAccount: req.session.managerData.username,
  11. userID: req.session.managerData.userID,
  12. LicenseKey: config.getLicenseKey(process.env.NODE_ENV),
  13. };
  14. res.render("maintain/price_info_summary/html/main.html", renderData);
  15. }
  16. // 获取所有数据
  17. async getData(req, res) {
  18. try {
  19. const data = await facade.getData();
  20. res.json({ error: 0, message: 'getData success', data });
  21. } catch (err) {
  22. console.log(err);
  23. }
  24. }
  25. // 获取分页数据
  26. async getPagingData(req, res) {
  27. try {
  28. const { page, pageSize, searchStr } = JSON.parse(req.body.data);
  29. const data = await facade.getPagingData(page, pageSize, searchStr);
  30. res.json({ error: 0, message: 'getData success', data });
  31. } catch (err) {
  32. console.log(err);
  33. }
  34. }
  35. // 编辑总表
  36. async editSummaryData(req, res) {
  37. try {
  38. const { postData } = JSON.parse(req.body.data);
  39. await facade.editSummaryData(postData);
  40. res.json({ error: 0, message: 'editPrice success' });
  41. } catch (err) {
  42. console.log(err);
  43. res.json({ error: 1, message: err.toString() });
  44. }
  45. }
  46. // 保存至总表
  47. async saveInSummary(req, res) {
  48. try {
  49. const { documents } = JSON.parse(req.body.data);
  50. await facade.saveInSummary(documents);
  51. res.json({ error: 0, message: 'saveInSummary success' });
  52. } catch (err) {
  53. console.log(err);
  54. res.json({ error: 1, message: err.toString() });
  55. }
  56. }
  57. async aiMatch(req, res) {
  58. try {
  59. const { listA, listB } = JSON.parse(req.body.data);
  60. const data = await facade.aiMatch(listA, listB);
  61. res.json({ error: 0, data, message: 'aiMatch success' });
  62. } catch (err) {
  63. console.log(err);
  64. res.json({ error: 1, message: err.toString() });
  65. }
  66. }
  67. async exportSummaryData(request, response) {
  68. try {
  69. const excelData = await facade.exportExcelData();
  70. const buffer = excel.build([{ name: "材料信息价总表", data: excelData }]);
  71. const filePath = './public/exportPriceSummary.xlsx';
  72. fs.writeFileSync(filePath, buffer, 'binary');
  73. const stats = fs.statSync(filePath);
  74. // 下载相关header
  75. response.set({
  76. 'Content-Type': 'application/octet-stream',
  77. 'Content-Disposition': 'attachment; filename=infoPriceSummary.xlsx',
  78. 'Content-Length': stats.size
  79. });
  80. fs.createReadStream(filePath).pipe(response);
  81. fs.unlink(filePath);
  82. } catch (error) {
  83. response.end(error);
  84. }
  85. }
  86. }
  87. module.exports = {
  88. priceInfoSummaryController: new PriceInfoSummaryController()
  89. };