明树Git Lab

Commit 38002686 authored by zfp1's avatar zfp1

update

parent 160d5a87
...@@ -19,8 +19,11 @@ ...@@ -19,8 +19,11 @@
| SMC | 土壤墒情 | | SMC | 土壤墒情 |
| WS | 气象 | | WS | 气象 |
| ACMS | 农事综合管理系统 | | ACMS | 农事综合管理系统 |
| IET | 环境检测 |
| IQI | 质量信息 |
# 记录 # 记录
项目启动之初,项目结构定位简单易懂,各个路由及方法跳转均可直接点击,方便驻场人员参与
``` ```
1. 待完成excel导出 -- 这个要看前端做管理端菜单管理,需要知道在那个菜单 对应哪个表 1. 待完成excel导出 -- 这个要看前端做管理端菜单管理,需要知道在那个菜单 对应哪个表
......
async function list(req, res, next) {
try {
let search = {del: 0};
// if(req.body.name) {
// search.name = {$regex: req.body.name}
// }
// if(req.body.deviceNumber) {
// search.deviceNumber = {$regex: req.body.deviceNumber}
// }
if(req.body.startTime) {
search.time = search.time || {};
search.time.$gte = req.body.startTime;
}
if(req.body.endTime) {
search.time = search.time || {};
search.time.$lte = req.body.endTime
}
if(_.isArray(req.body.time) && req.body.time.length == 2) {
search.time = {
$lte: req.body.time[1],
$gte: req.body.time[0]
}
}
let page = req.body.page || 1;
let pageSize = req.body.pageSize || 10;
let skip = (page - 1) * pageSize;
let count = await collectIET.countDocuments(search);
let data = await collectIET.find(search).skip(skip).limit(pageSize);;
res.sendData({list: data, count});
} catch (error) {
next(error);
}
}
module.exports = {
list
}
\ No newline at end of file
async function list(req, res, next) {
try {
let search = {del: 0};
// if(req.body.name) {
// search.name = {$regex: req.body.name}
// }
// if(req.body.deviceNumber) {
// search.deviceNumber = {$regex: req.body.deviceNumber}
// }
if(req.body.startTime) {
search.time = search.time || {};
search.time.$gte = req.body.startTime;
}
if(req.body.endTime) {
search.time = search.time || {};
search.time.$lte = req.body.endTime
}
if(_.isArray(req.body.time) && req.body.time.length == 2) {
search.time = {
$lte: req.body.time[1],
$gte: req.body.time[0]
}
}
let page = req.body.page || 1;
let pageSize = req.body.pageSize || 10;
let skip = (page - 1) * pageSize;
let count = await collectIQI.countDocuments(search);
let data = await collectIQI.find(search).skip(skip).limit(pageSize);;
res.sendData({list: data, count});
} catch (error) {
next(error);
}
}
module.exports = {
list
}
\ No newline at end of file
const ExcelJS = require('exceljs');
const _ = require('lodash');
const fs = require('fs');
async function list(req, res, next) {
try {
let search = {del: 0};
if(req.body.startTime) {
search.time = search.time || {};
search.time.$gte = req.body.startTime;
}
if(req.body.endTime) {
search.time = search.time || {};
search.time.$lte = req.body.endTime
}
let page = req.body.page || 1;
let pageSize = req.body.pageSize || 10;
let skip = (page - 1) * pageSize;
let count = await DB.IndRawMatIn.countDocuments(search);
let data = await DB.IndRawMatIn.find(search).skip(skip).limit(pageSize).sort({_id:-1});;
res.sendData({list: data, count});
} catch (error) {
next(error);
}
}
async function importExcel(req, res, next) {
try {
let workbook = new ExcelJS.Workbook();
await workbook.xlsx.readFile(req.file.path);
let worksheet = workbook.getWorksheet(1);
let arr = [];
for (let index = 2; index <= worksheet.actualRowCount; index++) {
let values = worksheet.getRow(index).values;
let obj = {
creator: req.user._id,
productName: values[1],
varieties: values[2],
attribute: values[3],
placeOrigin: values[4],
sensoryRequirements: values[5],
}
arr.push(obj);
}
console.log(arr.length, "=======================");
if(arr.length) {
await DB.IndRawMatIn.insertMany(arr);
}
res.sendData(arr);
} catch (error) {
next(error)
}
}
module.exports = {
list,
importExcel,
}
\ No newline at end of file
...@@ -57,17 +57,22 @@ const ProductPre = require('./models/letianProductPre'); ...@@ -57,17 +57,22 @@ const ProductPre = require('./models/letianProductPre');
const ProductDeep = require('./models/letianProductDeep'); const ProductDeep = require('./models/letianProductDeep');
const Device = require('./models/collectDevice'); const Device = require('./models/collectDevice');
const CollectSMC = require('./models/collectSMC'); const CollectSMC = require('./models/collectSMC');//土壤
const CollectIPS = require('./models/collectIPS'); const CollectIPS = require('./models/collectIPS');//虫情
const CollectIPSResult = require('./models/collectIPSResult'); const CollectIPSResult = require('./models/collectIPSResult');
const CollectIPSType = require('./models/collectIPSType'); const CollectIPSType = require('./models/collectIPSType');
const CollectIPSPlan = require('./models/collectIPSPlan'); const CollectIPSPlan = require('./models/collectIPSPlan');
const CollectWS = require('./models/collectWS'); const CollectWS = require('./models/collectWS'); // 气象
const CollectAttribute = require('./models/collectAttribute'); const CollectAttribute = require('./models/collectAttribute');
const CollectThreshold = require('./models/collectThreshold'); const CollectThreshold = require('./models/collectThreshold');
const collectIET = require('./models/collectIET');//工业-环境
const collectIQI = require('./models/collectIQI'); // 工业-质量
const RequestLog = require('./models/systemRequestLog'); const RequestLog = require('./models/systemRequestLog');
const IndRawMatIn = require('./models/letianIndRawMatIn'); //工业-原料品投入
global.DB = { global.DB = {
File, File,
User, User,
...@@ -106,9 +111,13 @@ global.DB = { ...@@ -106,9 +111,13 @@ global.DB = {
CollectIPSPlan, CollectIPSPlan,
CollectAttribute, CollectAttribute,
CollectWS, CollectWS,
collectIET,
collectIQI,
RequestLog, RequestLog,
IndRawMatIn,
} }
......
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const moment = require('moment');
/**
环境检测-------------
*/
const collectIndustryEnvironmentalTestingSchema = new Schema({
name: {
type: String,
comment: "设备名称"
},
deviceNumber: {
type: String,
required: true,
index: true,
comment: "设备编号"
},
time: {
type: Date,
get: v => moment(v).format("YYYY-MM-DD HH:mm:ss"),
comment: "采集时间"
},
/*---------------------------------------------*/
ambientTemperature: {
type: Number,
comment: "环境温度",
},
ambientTemperatureUnit: {
type: String,
comment1: "环境温度单位",
},
ambientHumidity: {
type: Number,
comment: "环境湿度",
},
ambientHumidityUnit: {
type: String,
comment1: "环境湿度单位",
},
airQuality: {
type: Number,
comment: "空气质量",
},
airQualityUnit: {
type: String,
comment1: "空气质量单位",
},
differentialPressure: {
type: Number,
comment: "压差",
},
differentialPressureUnit: {
type: String,
comment1: "压差单位",
},
miCcrobialCount: {
type: Number,
comment: "微生物数",
},
miCcrobialCountUnit: {
type: String,
comment1: "微生物数单位",
},
particleConcentration: {
type: Number,
comment: "颗粒物浓度",
},
particleConcentrationUnit: {
type: String,
comment1: "颗粒物浓度单位",
},
chemicalPollutant: {
type: Number,
comment: "化学污染物",
},
chemicalPollutantUnit: {
type: String,
comment1: "化学污染物单位",
},
createdAt: {
type: Date,
default: Date.now,
get: v => moment(v).format("YYYY-MM-DD HH:mm:ss"),
},
updatedAt: {
type: Date,
default: Date.now,
get: v => moment(v).format("YYYY-MM-DD HH:mm:ss"),
},
del: {
type: Number,
default: 0,
comment1: '默认0 , 1:表示删除,若有其他隐藏业务 不要混用此字段。'
}
}, {
toJSON: {
getters: true,
}
});
const CollectIET = mongoose.model('CollectIET', collectIndustryEnvironmentalTestingSchema, 'CollectIET');
module.exports = CollectIET;
\ No newline at end of file
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const moment = require('moment');
/**
环境检测-------------
*/
const collectIndustryQualityInformationSchema = new Schema({
name: {
type: String,
comment: "设备名称"
},
deviceNumber: {
type: String,
required: true,
index: true,
comment: "设备编号"
},
time: {
type: Date,
get: v => moment(v).format("YYYY-MM-DD HH:mm:ss"),
comment: "采集时间"
},
/* ------------------------------ */
energy: {
type: Number,
comment: "能量",
},
energyUnit: {
type: String,
comment1: "能量单位",
},
protein: {
type: Number,
comment: "蛋白质",
},
proteinUnit: {
type: String,
comment1: "蛋白质单位",
},
fat: {
type: Number,
comment: "脂肪",
},
fatUnit: {
type: String,
comment1: "脂肪单位",
},
carbohydrate: {
type: Number,
comment: "碳水化合物",
},
carbohydrateUnit: {
type: String,
comment1: "碳水化合物单位",
},
sodium: {
type: Number,
comment: "钠",
},
sodiumUnit: {
type: String,
comment1: "钠单位",
},
water: {
type: Number,
comment: "水分",
},
waterUnit: {
type: String,
comment1: "水分单位",
},
heavyMetal: {
type: Number,
comment: "重金属",
},
heavyMetalUnit: {
type: String,
comment1: "重金属单位",
},
impurity: {
type: Number,
comment: "杂质",
},
impurityUnit: {
type: String,
comment1: "杂质单位",
},
createdAt: {
type: Date,
default: Date.now,
get: v => moment(v).format("YYYY-MM-DD HH:mm:ss"),
},
updatedAt: {
type: Date,
default: Date.now,
get: v => moment(v).format("YYYY-MM-DD HH:mm:ss"),
},
del: {
type: Number,
default: 0,
comment1: '默认0 , 1:表示删除,若有其他隐藏业务 不要混用此字段。'
}
}, {
toJSON: {
getters: true,
}
});
const collectIQI = mongoose.model('collectIQI', collectIndustryQualityInformationSchema, 'collectIQI');
module.exports = collectIQI;
\ No newline at end of file
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const moment = require('moment');
/**
* 工业大屏-原料品投入情况
*/
const letianIndRawMatInSchema = new Schema({
productName: {
type: String,
comment: "产品名称",
},
varieties: {
type: String,
comment: "品种 ",
},
attribute: {
type: String,
comment: "属性 ",
},
placeOrigin: {
type: String,
comment: "产地",
},
sensoryRequirements: {
type: String,
comment: "感官要求",
},
creator: {
type: mongoose.Types.ObjectId,
ref: 'User',
comment1: "创建人"
},
createdAt: {
type: Date,
default: Date.now,
get: v => moment(v).format("YYYY-MM-DD HH:mm:ss"),
},
updatedAt: {
type: Date,
default: Date.now,
get: v => moment(v).format("YYYY-MM-DD HH:mm:ss"),
},
del: {
type: Number,
default: 0,
comment: '默认0 , 1:表示删除, 若有其他隐藏业务 不要混用此字段。'
}
}, {
toJSON: {
getters: true
}
});
const IndRawMatIn = mongoose.model('letianIndRawMatIn', letianIndRawMatInSchema, 'letianIndRawMatIn');
module.exports = IndRawMatIn;
\ No newline at end of file
...@@ -5,6 +5,8 @@ const router = express.Router(); ...@@ -5,6 +5,8 @@ const router = express.Router();
const collectIPSController = require('../controller/collectIPSController'); const collectIPSController = require('../controller/collectIPSController');
const collectSMCController = require('../controller/collectSMCController'); const collectSMCController = require('../controller/collectSMCController');
const collectWSController = require('../controller/collectWSController'); const collectWSController = require('../controller/collectWSController');
const collectIETController = require('../controller/collectIETController');
const collectIQIController = require('../controller/collectIQIController');
/* -----数据采集相关接口,可以用类简化 暂时---- */ /* -----数据采集相关接口,可以用类简化 暂时---- */
...@@ -38,4 +40,15 @@ router.post('/WS/show', collectWSController.queryInfo); // 查询详情 ...@@ -38,4 +40,15 @@ router.post('/WS/show', collectWSController.queryInfo); // 查询详情
router.post('/WS/update', collectWSController.updateInfo); // 更新 router.post('/WS/update', collectWSController.updateInfo); // 更新
router.post('/WS/del', collectWSController.delInfo); // 删除 router.post('/WS/del', collectWSController.delInfo); // 删除
/**
* 环境检测
*/
router.post('/IET/list', collectIETController.list); // 翻页列表
/**
* 质量信息
*/
router.post('/IQI/list', collectIQIController.list); // 翻页列表
module.exports = router; module.exports = router;
\ No newline at end of file
...@@ -58,6 +58,7 @@ router.post('/:modelName/importExcel', upload.single('file'), async (req, res, n ...@@ -58,6 +58,7 @@ router.post('/:modelName/importExcel', upload.single('file'), async (req, res, n
// 'productDirPlant': 'productDirPlantController', //直接种植 // 'productDirPlant': 'productDirPlantController', //直接种植
// 'productPre': 'productPreController', //初加工 // 'productPre': 'productPreController', //初加工
// 'productDeep': 'productDeepController', // 深加工 // 'productDeep': 'productDeepController', // 深加工
'rawMat': 'indRawMatController', //原料品投入
} }
let controller = require(`../controller/${modelMap[modelName]}`); let controller = require(`../controller/${modelMap[modelName]}`);
await controller.importExcel(req, res, next); await controller.importExcel(req, res, next);
......
...@@ -20,6 +20,7 @@ const statisticsRouter = require('./statisticsRouter'); ...@@ -20,6 +20,7 @@ const statisticsRouter = require('./statisticsRouter');
const flowRouter = require('./flowRouter'); const flowRouter = require('./flowRouter');
const excelrecordRouter = require('./excelrecordRouter'); const excelrecordRouter = require('./excelrecordRouter');
const inductryRouter = require('./inductryRouter');
router.use('/user', userRouter); // 用户 角色 router.use('/user', userRouter); // 用户 角色
...@@ -47,8 +48,7 @@ router.use('/flow', flowRouter); ...@@ -47,8 +48,7 @@ router.use('/flow', flowRouter);
router.use('/excelrecord', excelrecordRouter); router.use('/excelrecord', excelrecordRouter);
// 工业 // 工业
router.use('/ind', inductryRouter);
......
const express = require('express');
const router = express.Router();
const indRawMatController = require('../controller/indRawMatController');
// 工业-大屏-原料品投入
router.post('/rawMat/list', indRawMatController.list);
module.exports = router;
\ No newline at end of file
...@@ -19,5 +19,13 @@ router.post('/getAreaDistribution', statisticsController.getAreaDistribution); ...@@ -19,5 +19,13 @@ router.post('/getAreaDistribution', statisticsController.getAreaDistribution);
router.post('/getAreaDistribution2', statisticsController.getAreaDistribution2); router.post('/getAreaDistribution2', statisticsController.getAreaDistribution2);
/**----------------------工业大屏------------------------- */
// 工业大屏-设备数量
// router.post('/getIndustryDeviceCount', statisticsController.getIndustryDeviceCount);
// 工业大屏-环境监测-近七日变化
// router.post('/getEnvironmentalTrend', statisticsController.getEnvironmentalTrend);
// 工业大屏-产品质量信息-近七日变化
// router.post('/getQualityInfoTrend', statisticsController.getQualityInfoTrend);
module.exports = router; module.exports = router;
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment