zhangweicheng 5 yıl önce
ebeveyn
işleme
7b2029c343

+ 39 - 0
modules/main/controllers/info_price_controller.js

@@ -0,0 +1,39 @@
+/**
+ * Created by jimiz on 2017/4/9.
+ */
+let info_price_facade = require('../facade/info_price_facade');
+
+let logger = require("../../../logs/log_helper").logger;
+let controller = {
+    getOptions:async function (req){
+        let data = req.body.data;
+        data = JSON.parse(data);
+        return await info_price_facade.getOptions(data,req.session.sessionCompilation);
+    },
+    getDataByCondition:async function (req){
+      let data = req.body.data;
+      data = JSON.parse(data);
+      return await info_price_facade.getDataByCondition(data,req.session.sessionCompilation);
+    }
+};
+
+module.exports = {
+    action:async function(req,res){//自动跳转到URL对应的controller方法
+        let result={
+            error:0
+        }
+        try {
+            let functionName = req.url.replace(/\//g,"");
+            result.data = controller[functionName]?await controller[functionName](req):"";
+        }catch (err){
+            logger.err(err);
+            result.error=1;
+            result.message = err.message;
+        }
+        res.json(result);
+    }
+};
+
+
+
+

+ 47 - 0
modules/main/facade/info_price_facade.js

@@ -0,0 +1,47 @@
+/**
+ * Created by zhang on 2020/7/20
+ */
+module.exports={
+  getOptions,
+  getDataByCondition
+};
+
+const mongoose = require('mongoose');
+let infoLibModel = mongoose.model("std_price_info_lib");
+let infoItemsModel = mongoose.model("std_price_info_items");
+let _ = require("lodash");
+async function getOptions(data,compilation){//data 是预留对象,暂时不用
+  let compilationID = compilation._id;
+  let areaMap={};
+  let areas= [];
+  let periodMap={};
+  let libList = await infoLibModel.find({"compilationID":compilationID}).lean();
+  for(let l of libList){
+    for(let area of l.areas){
+      if(!areaMap[area]) areas.push(area);
+    }
+    //2020-05
+    let periodArray = l.period.split("-");
+    periodMap[periodArray[0]]?periodMap[periodArray[0]].push(periodArray[1]):periodMap[periodArray[0]]=[periodArray[1]]
+  }
+ 
+ 
+  for(let key in periodMap){
+    periodMap[key] = _.sortBy(periodMap[key]);
+  }
+  return {areas:areas,periodMap:periodMap}
+}
+
+
+async function getDataByCondition(data,compilation){
+  let result = {};
+  data.condition["compilationID"] = compilation._id;
+  if(data.keyWord) data.condition.name = {"$regex":new RegExp(data.keyWord, "i")};
+  if(data.lastID){ //有最后一行说明是查询下一页
+    data.condition["_id"] = {$gt:mongoose.Types.ObjectId(data.lastID)};
+  }else{
+    result.totalSize = await infoItemsModel.find(data.condition).count();
+  }
+  result.items = await infoItemsModel.find(data.condition).lean().sort({"_id":1}).limit(50);
+  return result;
+}

+ 13 - 0
modules/main/routes/info_price_route.js

@@ -0,0 +1,13 @@
+/**
+ * Created by jimiz on 2017/4/7.
+ */
+let express = require('express');
+
+module.exports = function (app) {
+    let infoRouter = express.Router();
+    let infoController = require('../controllers/info_price_controller');
+    infoRouter.post('/getOptions', infoController.action);
+    infoRouter.post('/getDataByCondition', infoController.action);
+
+    app.use('/infoPrice', infoRouter);
+};