index.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. const mongoose = require('mongoose');
  2. const priceInfoSummaryModel = mongoose.model('std_price_info_summary');
  3. // 获取分页数据
  4. const getPagingData = async (page, pageSize, searchStr) => {
  5. let query = {};
  6. if (searchStr) {
  7. const nameReg = new RegExp(searchStr);
  8. query = {
  9. $or: [{ classCode: searchStr }, { name: { $regex: nameReg } }]
  10. }
  11. }
  12. const totalCount = await priceInfoSummaryModel.count(query);
  13. const items = await priceInfoSummaryModel.find(query).lean().sort({ classCode: -1 }).skip(page * pageSize).limit(pageSize);
  14. return { items, totalCount };
  15. }
  16. const UpdateType = {
  17. UPDATE: 'update',
  18. DELETE: 'delete',
  19. CREATE: 'create',
  20. };
  21. // 编辑表格
  22. async function editSummaryData(postData) {
  23. const bulks = [];
  24. postData.forEach(data => {
  25. if (data.type === UpdateType.UPDATE) {
  26. bulks.push({
  27. updateOne: {
  28. filter: { ID: data.ID },
  29. update: { ...data.data }
  30. }
  31. });
  32. } else if (data.type === UpdateType.DELETE) {
  33. bulks.push({
  34. deleteOne: {
  35. filter: { ID: data.ID }
  36. }
  37. });
  38. } else {
  39. bulks.push({
  40. insertOne: {
  41. document: data.data
  42. }
  43. });
  44. }
  45. });
  46. if (bulks.length) {
  47. await priceInfoSummaryModel.bulkWrite(bulks);
  48. }
  49. }
  50. // 保存至总表
  51. async function saveInSummary(documents) {
  52. await priceInfoSummaryModel.insertMany(documents);
  53. }
  54. // 导出excel数据
  55. async function exportExcelData() {
  56. const items = await priceInfoSummaryModel.find({}).sort({ classCode: 1 }).lean();
  57. // 整理数据
  58. let classData = [];
  59. for (const tmp of items) {
  60. const item = [tmp.code || '', tmp.classCode || '', tmp.expString || '', tmp.name || '', tmp.specs || '', tmp.unit || ''];
  61. classData.push(item);
  62. }
  63. const excelData = [['主从对应码', '别名编码', '计算式', '材料名称', '规格型号', '单位']];
  64. excelData.push.apply(excelData, classData);
  65. return excelData;
  66. }
  67. module.exports = {
  68. getPagingData,
  69. editSummaryData,
  70. saveInSummary,
  71. exportExcelData,
  72. }