明树Git Lab

Commit e3d6bb73 authored by zfp1's avatar zfp1

update

parent ac87d65c
...@@ -25,13 +25,13 @@ async function getSMCChangeTrend(req, res, next) { ...@@ -25,13 +25,13 @@ async function getSMCChangeTrend(req, res, next) {
startTime.setHours(0); startTime.setHours(0);
startTime.setMinutes(0); startTime.setMinutes(0);
startTime.setSeconds(0); startTime.setSeconds(0);
search.time = { $gt: startTime, $lte: endTime} search.time = { $gt: startTime, $lte: endTime }
} }
if(req.body.land) { if (req.body.land) {
let devs = await DB.Device.find({land: req.body.land}).lean().exec(); let devs = await DB.Device.find({ land: req.body.land }).lean().exec();
if(devs && devs.length) { if (devs && devs.length) {
let devNums = devs.map(o => {return o.deviceNumber}); let devNums = devs.map(o => { return o.deviceNumber });
search.deviceNumber = {$in: devNums} search.deviceNumber = { $in: devNums }
} }
} }
console.log(JSON.stringify(search)) console.log(JSON.stringify(search))
...@@ -54,13 +54,15 @@ async function getSMCChangeTrend(req, res, next) { ...@@ -54,13 +54,15 @@ async function getSMCChangeTrend(req, res, next) {
// soilPH: { $avg: "$soilPH" }, // soilPH: { $avg: "$soilPH" },
} }
}, },
{$project: { {
soilTemperature: {$round: ["$soilTemperature", 2]}, $project: {
soilMoisture: {$round: ["$soilMoisture", 2]}, soilTemperature: { $round: ["$soilTemperature", 2] },
nitrogen: {$round: ["$nitrogen", 2]}, soilMoisture: { $round: ["$soilMoisture", 2] },
phosphorus: {$round: ["$phosphorus", 2]}, nitrogen: { $round: ["$nitrogen", 2] },
potassium: {$round: ["$potassium", 2]}, phosphorus: { $round: ["$phosphorus", 2] },
}}, potassium: { $round: ["$potassium", 2] },
}
},
{ $sort: { _id: 1 } } { $sort: { _id: 1 } }
]; ];
...@@ -86,10 +88,12 @@ async function getSMCChangeTrend(req, res, next) { ...@@ -86,10 +88,12 @@ async function getSMCChangeTrend(req, res, next) {
soilConductivity: { $avg: "$soilConductivity" }, soilConductivity: { $avg: "$soilConductivity" },
} }
}, },
{$project: { {
soilPH: {$round: ["$soilPH", 2]}, $project: {
soilConductivity: {$round: ["$soilConductivity", 2]}, soilPH: { $round: ["$soilPH", 2] },
}}, soilConductivity: { $round: ["$soilConductivity", 2] },
}
},
{ $sort: { _id: 1 } } { $sort: { _id: 1 } }
]; ];
...@@ -100,12 +104,12 @@ async function getSMCChangeTrend(req, res, next) { ...@@ -100,12 +104,12 @@ async function getSMCChangeTrend(req, res, next) {
for (let index = 0; index < ret2.length; index++) { for (let index = 0; index < ret2.length; index++) {
const element = ret2[index]; const element = ret2[index];
phMap[element._id] = element; phMap[element._id] = element;
} }
let returnData = []; let returnData = [];
for (let index = 0; index < ret.length; index++) { for (let index = 0; index < ret.length; index++) {
let element = ret[index]; let element = ret[index];
if(phMap[element._id]) { if (phMap[element._id]) {
element = { element = {
...element, ...element,
...phMap[element._id] ...phMap[element._id]
...@@ -139,7 +143,7 @@ async function getWSChangeTrend(req, res, next) { ...@@ -139,7 +143,7 @@ async function getWSChangeTrend(req, res, next) {
startTime.setHours(0); startTime.setHours(0);
startTime.setMinutes(0); startTime.setMinutes(0);
startTime.setSeconds(0); startTime.setSeconds(0);
search.time = { $gt: startTime, $lte: endTime} search.time = { $gt: startTime, $lte: endTime }
} }
let aggr = [ let aggr = [
{ {
...@@ -155,11 +159,13 @@ async function getWSChangeTrend(req, res, next) { ...@@ -155,11 +159,13 @@ async function getWSChangeTrend(req, res, next) {
rainfall: { $avg: "$rainfall" }, rainfall: { $avg: "$rainfall" },
} }
}, },
{$project: { {
wsTemperature: {$round: ["$wsTemperature", 2]}, $project: {
wsMoisture: {$round: ["$wsMoisture", 2]}, wsTemperature: { $round: ["$wsTemperature", 2] },
rainfall: {$round: ["$rainfall", 2]}, wsMoisture: { $round: ["$wsMoisture", 2] },
}}, rainfall: { $round: ["$rainfall", 2] },
}
},
{ $sort: { _id: 1 } } { $sort: { _id: 1 } }
]; ];
let ret = await DB.CollectWS.aggregate(aggr); let ret = await DB.CollectWS.aggregate(aggr);
...@@ -189,7 +195,7 @@ async function getIPSChangeTrend(req, res, next) { ...@@ -189,7 +195,7 @@ async function getIPSChangeTrend(req, res, next) {
startTime.setHours(0); startTime.setHours(0);
startTime.setMinutes(0); startTime.setMinutes(0);
startTime.setSeconds(0); startTime.setSeconds(0);
search.time = { $gt: startTime, $lte: endTime} search.time = { $gt: startTime, $lte: endTime }
} }
let aggr = [ let aggr = [
{ {
...@@ -274,7 +280,7 @@ async function getAreaDistribution(req, res, next) { ...@@ -274,7 +280,7 @@ async function getAreaDistribution(req, res, next) {
// 跟前端约定 传递对应区域名称 // 跟前端约定 传递对应区域名称
let zonePre = await DB.Zone.findOne({ name: req.body.name, del: 0 }); let zonePre = await DB.Zone.findOne({ name: req.body.name, del: 0 });
if (!zonePre) { if (!zonePre) {
return res.sendError(errorMessage.resourceNotFound); return res.sendError(errorMessage.resourceNotFound);
} }
//往下取一层 //往下取一层
let len = zonePre.parentIds && zonePre.parentIds.length || 0; let len = zonePre.parentIds && zonePre.parentIds.length || 0;
...@@ -293,11 +299,13 @@ async function getAreaDistribution(req, res, next) { ...@@ -293,11 +299,13 @@ async function getAreaDistribution(req, res, next) {
latestYieldValue: { $sum: "$latestYieldValue" }, latestYieldValue: { $sum: "$latestYieldValue" },
} }
}, },
{$project: { {
area: {$round: ["$area", 2]}, $project: {
latestYield: {$round: ["$latestYield", 2]}, area: { $round: ["$area", 2] },
latestYieldValue: {$round: ["$latestYieldValue", 2]}, latestYield: { $round: ["$latestYield", 2] },
}}, latestYieldValue: { $round: ["$latestYieldValue", 2] },
}
},
]); ]);
let totalArea = _.sumBy(lands, 'area'); let totalArea = _.sumBy(lands, 'area');
let totalYield = _.sumBy(lands, 'latestYield'); let totalYield = _.sumBy(lands, 'latestYield');
...@@ -363,7 +371,7 @@ async function getAreaDistribution2(req, res, next) { ...@@ -363,7 +371,7 @@ async function getAreaDistribution2(req, res, next) {
/*---------------------------------工业-------------------------------------------- */ /*---------------------------------工业-------------------------------------------- */
async function getIndustryDeviceCount(req, res, next) { async function getIndustryDeviceCount(req, res, next) {
try { try {
res.sendData(ret); res.sendData(ret);
} catch (error) { } catch (error) {
next(error); next(error);
...@@ -385,7 +393,7 @@ async function getEnvironmentalTrend(req, res, next) { ...@@ -385,7 +393,7 @@ async function getEnvironmentalTrend(req, res, next) {
startTime.setHours(0); startTime.setHours(0);
startTime.setMinutes(0); startTime.setMinutes(0);
startTime.setSeconds(0); startTime.setSeconds(0);
search.time = { $gt: startTime, $lte: endTime} search.time = { $gt: startTime, $lte: endTime }
} }
let aggr = [ let aggr = [
{ {
...@@ -401,11 +409,13 @@ async function getEnvironmentalTrend(req, res, next) { ...@@ -401,11 +409,13 @@ async function getEnvironmentalTrend(req, res, next) {
chemicalPollutant: { $avg: "$chemicalPollutant" }, chemicalPollutant: { $avg: "$chemicalPollutant" },
} }
}, },
{$project: { {
miCcrobialCount: {$round: ["$miCcrobialCount", 2]}, $project: {
particleConcentration: {$round: ["$particleConcentration", 2]}, miCcrobialCount: { $round: ["$miCcrobialCount", 2] },
chemicalPollutant: {$round: ["$chemicalPollutant", 2]}, particleConcentration: { $round: ["$particleConcentration", 2] },
}}, chemicalPollutant: { $round: ["$chemicalPollutant", 2] },
}
},
{ $sort: { _id: 1 } } { $sort: { _id: 1 } }
]; ];
let ret = await DB.CollectIET.aggregate(aggr); let ret = await DB.CollectIET.aggregate(aggr);
...@@ -419,7 +429,7 @@ async function getEnvironmentalTrend(req, res, next) { ...@@ -419,7 +429,7 @@ async function getEnvironmentalTrend(req, res, next) {
async function getQualityInfoTrend(req, res, next) { async function getQualityInfoTrend(req, res, next) {
try { try {
let search = { let search = {
time: { $exists: true }
}; };
if ((req.body.startTime && req.body.endTime)) { if ((req.body.startTime && req.body.endTime)) {
let endTime = new Date(req.body.endTime); let endTime = new Date(req.body.endTime);
...@@ -430,30 +440,53 @@ async function getQualityInfoTrend(req, res, next) { ...@@ -430,30 +440,53 @@ async function getQualityInfoTrend(req, res, next) {
startTime.setHours(0); startTime.setHours(0);
startTime.setMinutes(0); startTime.setMinutes(0);
startTime.setSeconds(0); startTime.setSeconds(0);
search.time = { $gt: startTime, $lte: endTime} search.time = { $gt: startTime, $lte: endTime }
} }
let aggr = [ let aggr = [
{$match: search},
{ {
$match: { $group: {
...search _id: {
$dateToString: {
format: "%Y-%m-%d",
date: "$time"
}
},
total: { $sum: 1 }, // 每天总量
weightPassCount: {
$sum: {
$cond: [{ $eq: ["$proWeightStatus", "合格"] }, 1, 0]
}
},
metalPassCount: {
$sum: {
$cond: [{ $eq: ["$proHaveMetal", false] }, 1, 0]
}
}
} }
}, },
{ {
$group: { $project: {
_id: { $dateToString: { format: "%Y-%m-%d", date: "$time", timezone: "+08:00" } }, // 将时间戳转换为日期字符串 time: "$_id",
water: { $avg: "$water" }, total: 1,
heavyMetal: { $avg: "$heavyMetal" }, weightPassRate: {
impurity: { $avg: "$impurity" }, $round: [
{ $divide: ["$weightPassCount", "$total"] },
2
]
},
metalPassRate: {
$round: [
{ $divide: ["$metalPassCount", "$total"] },
2
]
},
_id: 0
} }
}, },
{$project: { { $sort: { date: 1 } } // 按日期排序
water: {$round: ["$water", 2]},
heavyMetal: {$round: ["$heavyMetal", 2]},
impurity: {$round: ["$impurity", 2]},
}},
{ $sort: { _id: 1 } }
]; ];
let ret = await DB.CollectIQI.aggregate(aggr); let ret = await DB.HeavyMetal.aggregate(aggr);
res.sendData(ret); res.sendData(ret);
} catch (error) { } catch (error) {
next(error); next(error);
......
const ExcelJS = require('exceljs');
const _ = require('lodash');
const fs = require('fs');
async function list(req, res, next) {
try {
let search = { del: 0 };
let page = req.body.page || 1;
let pageSize = req.body.pageSize || 10;
let skip = (page - 1) * pageSize;
if (req.body.name) {
search.name = req.body.name;
}
let count = await DB.SuppFact.countDocuments(search)
let list = await DB.SuppFact.find(search).skip(skip).limit(pageSize).sort({ _id: -1 }).lean().exec();
res.sendData({ count, list });
} catch (error) {
next(error)
}
}
async function lunbo(req, res, next) {
try {
let search = { del: 0, name: {$exists: true} };
let ret = await DB.SuppFact.aggregate([
{ $match: search },
{
$group: {
_id: "$name",
}
}
]);
ret = ret.map(o => {return o._id})
res.sendData(ret);
} catch (error) {
next(error)
}
}
async function create(req, res, next) {
try {
let ret = await DB.SuppFact.create(req.body)
res.sendData(ret);
} catch (error) {
next(error)
}
}
async function updateOne(req, res, next) {
try {
let updateInfo = {
...req.body,
}
let ret = await DB.SuppFact.findOneAndUpdate({ _id: req.body._id }, updateInfo);
res.sendData(ret);
} catch (error) {
next(error)
}
}
async function deleteOne(req, res, next) {
try {
let ret = await DB.SuppFact.findOneAndUpdate({ _id: req.body._id }, { del: 1 });
res.sendData(ret);
} catch (error) {
next(error)
}
}
async function deleteMany(req, res, next) {
try {
let _ids = req.body._ids;
if (_.isArray(_ids) && _ids.length > 0) {
let ret = await DB.SuppFact.updateMany({ _id: { $in: _ids } }, { del: 1 });
res.sendData(ret);
} else {
res.sendData();
}
} 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,
name: values[1],
testItem: values[2],
result: values[3],
unit: values[4],
nutrientReferenceValue: values[5],
}
if (typeof obj.indate == 'number') {
obj.indate = new Date(1900, 0, obj.indate - 1, 0, 0, 0);
}
arr.push(obj)
}
if (arr.length) {
await DB.SuppFact.insertMany(arr);
}
res.sendData(arr);
} catch (error) {
next(error)
}
}
async function exportExcel(req, res, next) {
try {
let search = { del: 0 };
if (req.body.name) {
search.name = { $regex: req.body.name };
}
if (req.body.startTime) {
search.indate = search.indate || {};
search.indate.$gte = req.body.startTime;
}
if (req.body.endTime) {
search.indate = search.indate || {};
search.indate.$lte = req.body.endTime
}
let ret = await DB.ExcelRecord.create({
creator: req.user._id,
type: 2,
modleName: 'SuppFact',
search,
})
res.sendData(ret);
} catch (error) {
next(error);
}
}
module.exports = {
list,
create,
importExcel,
deleteOne,
updateOne,
exportExcel,
deleteMany,
lunbo,
}
\ No newline at end of file
...@@ -83,6 +83,9 @@ const RawMatReqList = require("./models/letianRawMatReqList"); ...@@ -83,6 +83,9 @@ const RawMatReqList = require("./models/letianRawMatReqList");
const PackMatInList = require("./models/letianPackMatInList"); const PackMatInList = require("./models/letianPackMatInList");
const PackMatOutList = require("./models/letianPackMatOutList"); const PackMatOutList = require("./models/letianPackMatOutList");
//营养成分表
const SuppFact = require("./models/letianSuppFact");
global.DB = { global.DB = {
File, File,
...@@ -136,6 +139,8 @@ global.DB = { ...@@ -136,6 +139,8 @@ global.DB = {
RawMatReqList, RawMatReqList,
PackMatInList, PackMatInList,
PackMatOutList, PackMatOutList,
SuppFact,
} }
......
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const moment = require('moment');
// const autoIncrement = require('mongoose-auto-increment');
// autoIncrement.initialize(mongoose.connection);
/**
* //营养成分表
*/
const letianSuppFactSchema = new Schema({
name: {
type: String,
comment: "名称",
},
testItem: {
type: String,
comment: "检测项目",
},
result: {
type: String,
comment: "结果",
},
unit: {
type: String,
comment: "单位",
},
nutrientReferenceValue: {
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,
comment1: '默认0 , 1:表示删除, 若有其他隐藏业务 不要混用此字段。'
}
}, {
toJSON: {
getters: true
}
});
const SuppFact = mongoose.model('SuppFact', letianSuppFactSchema, 'letianSuppFact');
module.exports = SuppFact;
\ No newline at end of file
...@@ -63,6 +63,7 @@ router.post('/:modelName/importExcel', upload.single('file'), async (req, res, n ...@@ -63,6 +63,7 @@ router.post('/:modelName/importExcel', upload.single('file'), async (req, res, n
'rawMatReq': 'rawMatReqlistController', //原材料出库(领用)明细表 'rawMatReq': 'rawMatReqlistController', //原材料出库(领用)明细表
'packMatIn': 'packMatInListController', //包装材料入库(采购)明细表 'packMatIn': 'packMatInListController', //包装材料入库(采购)明细表
'packMatOut': 'packMatOutListController', //包装材料出库(领用)明细表 'packMatOut': 'packMatOutListController', //包装材料出库(领用)明细表
'suppFact': 'suppFactController',
} }
let controller = require(`../controller/${modelMap[modelName]}`); let controller = require(`../controller/${modelMap[modelName]}`);
await controller.importExcel(req, res, next); await controller.importExcel(req, res, next);
...@@ -85,6 +86,7 @@ router.post('/:modelName/exportExcel', async (req, res, next) => { ...@@ -85,6 +86,7 @@ router.post('/:modelName/exportExcel', async (req, res, next) => {
'rawMatReq': 'rawMatReqlistController', //原材料出库(领用)明细表 'rawMatReq': 'rawMatReqlistController', //原材料出库(领用)明细表
'packMatIn': 'packMatInListController', //包装材料入库(采购)明细表 'packMatIn': 'packMatInListController', //包装材料入库(采购)明细表
'packMatOut': 'packMatOutListController', //包装材料出库(领用)明细表 'packMatOut': 'packMatOutListController', //包装材料出库(领用)明细表
'suppFact': 'suppFactController',
} }
console.log(modelMap[modelName]); console.log(modelMap[modelName]);
let controller = require(`../controller/${modelMap[modelName]}`); let controller = require(`../controller/${modelMap[modelName]}`);
......
...@@ -24,6 +24,7 @@ const inductryRouter = require('./inductryRouter'); ...@@ -24,6 +24,7 @@ const inductryRouter = require('./inductryRouter');
const heavyMetalRouter = require('./externalRouter'); const heavyMetalRouter = require('./externalRouter');
const compInfoRouter = require('./compInfoRouter'); const compInfoRouter = require('./compInfoRouter');
const rawmatRouter = require('./rawmatRouter'); const rawmatRouter = require('./rawmatRouter');
const nutrRouter = require('./nutrRouter');
router.use('/user', userRouter); // 用户 角色 router.use('/user', userRouter); // 用户 角色
...@@ -53,9 +54,11 @@ router.use('/excelrecord', excelrecordRouter); ...@@ -53,9 +54,11 @@ router.use('/excelrecord', excelrecordRouter);
// 工业 // 工业
router.use('/ind', inductryRouter); router.use('/ind', inductryRouter);
router.use('/company', compInfoRouter); router.use('/company', compInfoRouter);//公司信息
router.use('/mat', rawmatRouter); router.use('/mat', rawmatRouter); //原材料 包材
router.use('/nutrients', nutrRouter);
......
const express = require('express');
const router = express.Router();
const suppFactController = require('../controller/suppFactController');
router.post('/suppFact/create', suppFactController.create);
router.post('/suppFact/update', suppFactController.updateOne);
router.post('/suppFact/delete', suppFactController.deleteOne);
router.post('/suppFact/batchDelete', suppFactController.deleteMany);
router.post('/suppFact/list', suppFactController.list);
router.post('/suppFact/lunbo', suppFactController.lunbo);
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