明树Git Lab
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
L
letian_backend
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
zengfanpei
letian_backend
Commits
38002686
Commit
38002686
authored
Dec 04, 2024
by
zfp1
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update
parent
160d5a87
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
518 additions
and
6 deletions
+518
-6
README.md
README.md
+3
-0
collectIETController.js
controller/collectIETController.js
+51
-0
collectIQIController.js
controller/collectIQIController.js
+52
-0
indRawMatController.js
controller/indRawMatController.js
+79
-0
index.js
db/index.js
+13
-4
collectIET.js
db/models/collectIET.js
+108
-0
collectIQI.js
db/models/collectIQI.js
+116
-0
letianIndRawMatIn.js
db/models/letianIndRawMatIn.js
+59
-0
collectRouter.js
router/collectRouter.js
+13
-0
fileRouter.js
router/fileRouter.js
+1
-0
index.js
router/index.js
+2
-2
inductryRouter.js
router/inductryRouter.js
+13
-0
statisticsRouter.js
router/statisticsRouter.js
+8
-0
No files found.
README.md
View file @
38002686
...
@@ -19,8 +19,11 @@
...
@@ -19,8 +19,11 @@
| SMC | 土壤墒情 |
| SMC | 土壤墒情 |
| WS | 气象 |
| WS | 气象 |
| ACMS | 农事综合管理系统 |
| ACMS | 农事综合管理系统 |
| IET | 环境检测 |
| IQI | 质量信息 |
# 记录
# 记录
项目启动之初,项目结构定位简单易懂,各个路由及方法跳转均可直接点击,方便驻场人员参与
```
```
1. 待完成excel导出 -- 这个要看前端做管理端菜单管理,需要知道在那个菜单 对应哪个表
1. 待完成excel导出 -- 这个要看前端做管理端菜单管理,需要知道在那个菜单 对应哪个表
...
...
controller/collectIETController.js
0 → 100644
View file @
38002686
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
controller/collectIQIController.js
0 → 100644
View file @
38002686
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
controller/indRawMatController.js
0 → 100644
View file @
38002686
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
db/index.js
View file @
38002686
...
@@ -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
,
}
}
...
...
db/models/collectIET.js
0 → 100644
View file @
38002686
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
db/models/collectIQI.js
0 → 100644
View file @
38002686
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
db/models/letianIndRawMatIn.js
0 → 100644
View file @
38002686
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
router/collectRouter.js
View file @
38002686
...
@@ -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
router/fileRouter.js
View file @
38002686
...
@@ -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
);
...
...
router/index.js
View file @
38002686
...
@@ -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
);
...
...
router/inductryRouter.js
0 → 100644
View file @
38002686
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
router/statisticsRouter.js
View file @
38002686
...
@@ -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
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment