明树Git Lab
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
J
jt_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
jt_backend
Commits
e053c2e6
Commit
e053c2e6
authored
Jan 14, 2026
by
zfp1
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update
parent
18cfbeab
Pipeline
#106104
passed with stage
in 3 seconds
Changes
3
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
140 additions
and
24 deletions
+140
-24
projectController.js
controller/projectController.js
+117
-12
projectLixiang.js
db/model/jt/projectLixiang.js
+8
-2
projectRouter.js
router/projectRouter.js
+15
-10
No files found.
controller/projectController.js
View file @
e053c2e6
...
...
@@ -333,7 +333,7 @@ async function queryLixiangResult(req, res, next) {
await
DB
.
Project
.
update
({
projectLzType
:
5
},
{
where
:
{
id
:
req
.
body
.
id
}
});
//2. 存储快照 关联关系太多 全部建立快照表工程过大,暂时存储形式
proInfo
.
projectLzType
=
5
;
await
DB
.
ProjectLixiang
.
create
({
lixiang
:
proInfo
,
projectId
:
proInfo
.
id
});
// await DB.ProjectLixiang.create({ lixiang: proInfo, type: 1
, projectId: proInfo.id });
return
res
.
sendData
(
proInfo
);
}
else
{
return
res
.
sendError
(
errorMessage
.
resourceNotFound
);
//暂时
...
...
@@ -357,7 +357,7 @@ async function approvalLixiang(req, res, next) {
await
DB
.
Project
.
update
({
projectLzType
:
5
},
{
where
:
{
id
:
req
.
body
.
id
}
});
//2. 存储快照 关联关系太多 全部建立快照表工程过大,暂时存储形式
proInfo
.
projectLzType
=
5
;
await
DB
.
ProjectLixiang
.
create
({
lixiang
:
proInfo
,
projectId
:
proInfo
.
id
});
await
DB
.
ProjectLixiang
.
create
({
lixiang
:
proInfo
,
type
:
1
,
projectId
:
proInfo
.
id
});
await
DB
.
FlowRecord
.
create
({
userId
:
req
.
user
.
id
,
actionName
:
'立项审批通过'
,
...
...
@@ -600,13 +600,13 @@ async function queryJueceResult(req, res, next) {
*/
async
function
approvalJuece
(
req
,
res
,
next
)
{
try
{
let
proInfo
=
await
projectModule
.
getProjectInfo
ByLixiang
(
req
.
body
);
let
proInfo
=
await
projectModule
.
getProjectInfo
(
req
.
body
);
if
(
req
.
body
.
approvalResult
)
{
//1. 更新项目状态--已决策
await
DB
.
Project
.
update
({
projectLzType
:
9
},
{
where
:
{
id
:
req
.
body
.
id
}
});
await
DB
.
Project
.
update
({
projectLzType
:
9
},
{
where
:
{
id
:
req
.
body
.
id
}
});
//2. 存储快照 关联关系太多 全部建立快照表工程过大,暂时存储形式
proInfo
.
projectLzType
=
9
;
await
DB
.
ProjectLixiang
.
create
({
lixiang
:
proInfo
,
projectId
:
proInfo
.
id
});
await
DB
.
ProjectLixiang
.
create
({
juece
:
proInfo
,
type
:
2
,
projectId
:
proInfo
.
id
});
await
DB
.
FlowRecord
.
create
({
userId
:
req
.
user
.
id
,
actionName
:
'决策审批通过'
,
...
...
@@ -916,29 +916,57 @@ async function getProjectInfo(req, res, next) {
return
res
.
sendError
(
errorMessage
.
resourceNotFound
);
}
let
ret
=
await
projectModule
.
getProjectInfo
(
req
.
body
);
let
lixiang
=
await
DB
.
ProjectLixiang
.
findOne
({
order
:
[[
'createdAt'
,
'DESC'
]],
where
:
{
projectId
:
req
.
body
.
id
},
});
if
(
!
(
ret
&&
ret
.
id
))
{
return
res
.
sendError
(
errorMessage
.
resourceNotFound
);
}
let
lixiang
=
await
DB
.
ProjectLixiang
.
findOne
({
order
:
[[
'createdAt'
,
'DESC'
]],
where
:
{
projectId
:
req
.
body
.
id
,
type
:
1
},
});
let
juece
=
await
DB
.
ProjectLixiang
.
findOne
({
order
:
[[
'createdAt'
,
'DESC'
]],
where
:
{
projectId
:
req
.
body
.
id
,
type
:
2
},
});
let
obj
=
{};
console
.
log
(
"----"
,
ret
.
projectLzType
)
if
(
lixiang
&&
lixiang
.
id
)
{
obj
.
lixiang
=
lixiang
.
lixiang
;
//快照
//当项目状态 进入决策信息填报时候
if
([
7
,
8
,
9
].
includes
(
ret
&&
ret
.
projectLzType
))
{
// //当项目状态 进入决策信息填报时候
// if ([7, 8, 9].includes(ret && ret.projectLzType)) {
// obj.juece = ret;
// }
if
(
juece
&&
juece
.
id
)
{
obj
.
juece
=
juece
.
juece
;
}
else
{
obj
.
juece
=
ret
;
}
}
else
{
obj
.
lixiang
=
ret
;
//这里就只有立项 决策的数据一旦开始填报 证明一定有ProjectLixiang lixiang
}
//进入再决策的
if
([
11
,
12
,
13
].
includes
(
ret
&&
ret
.
projectLzType
))
{
obj
.
zaijuece
=
ret
;
}
return
res
.
sendData
(
obj
);
}
catch
(
error
)
{
next
(
error
);
}
}
async
function
getProjectFinalInfo
(
req
,
res
,
next
)
{
try
{
if
(
!
req
.
body
.
id
)
{
return
res
.
sendError
(
errorMessage
.
resourceNotFound
);
}
let
ret
=
await
projectModule
.
getProjectInfo
(
req
.
body
);
if
(
!
(
ret
&&
ret
.
id
))
{
return
res
.
sendError
(
errorMessage
.
resourceNotFound
);
}
return
res
.
sendData
(
ret
);
}
catch
(
error
)
{
next
(
error
);
}
}
async
function
deleteProject
(
req
,
res
,
next
)
{
...
...
@@ -1135,7 +1163,7 @@ async function getOwnProjects(req, res, next) {
async
function
getProFlowRecord
(
req
,
res
,
next
)
{
try
{
let
rcs
=
await
DB
.
FlowRecord
.
findAll
({
where
:
{
projectId
:
req
.
body
.
projectId
}
});
let
rcs
=
await
DB
.
FlowRecord
.
findAll
({
where
:
{
projectId
:
req
.
body
.
projectId
}
});
return
res
.
sendData
(
rcs
);
}
catch
(
error
)
{
next
(
error
);
...
...
@@ -1143,6 +1171,79 @@ async function getProFlowRecord(req, res, next) {
}
async
function
saveZaiJuece
(
req
,
res
,
next
)
{
try
{
if
(
!
req
.
body
.
id
)
{
return
res
.
sendError
(
errorMessage
.
resourceNotFound
)
}
let
ret
=
await
xiangmujuecegengxin
(
req
.
body
,
11
);
//再决策填报中
return
res
.
sendData
(
ret
);
}
catch
(
error
)
{
next
(
error
);
}
}
async
function
startZaiJuece
(
req
,
res
,
next
)
{
try
{
if
(
!
req
.
body
.
id
)
{
return
res
.
sendError
(
errorMessage
.
resourceNotFound
)
}
let
ret
=
await
xiangmujuecegengxin
(
req
.
body
,
12
);
//再决策审批中
// 给审批人员发消息
await
DB
.
FlowRecord
.
create
({
userId
:
req
.
user
.
id
,
actionName
:
'发起项目再决策审批'
,
projectId
:
req
.
body
.
id
,
});
let
approvers
=
await
userModule
.
getProjectApprover
(
req
.
user
.
id
,
'xmjc_sp'
);
if
(
!
(
approvers
&&
approvers
.
length
>
0
))
{
return
res
.
sendError
({
code
:
'60002'
,
msg
:
'项目已保存,请联系管理员为本公司添加【项目再决策】角色人员'
});
}
await
DB
.
Message
.
create
({
projectId
:
req
.
body
.
id
,
creator
:
req
.
user
.
id
,
receivers
:
approvers
.
map
(
o
=>
o
.
id
),
type
:
2
,
title
:
`项目【
${
req
.
body
.
name
}
】已发起项目再决策,请尽快处理!`
,
content
:
`项目【
${
req
.
body
.
name
}
】已发起项目再决策,请尽快处理!`
});
return
res
.
sendData
(
ret
);
}
catch
(
error
)
{
next
(
error
);
}
}
async
function
approvalZaiJuece
(
req
,
res
,
next
)
{
try
{
let
proInfo
=
await
projectModule
.
getProjectInfo
(
req
.
body
);
if
(
req
.
body
.
approvalResult
)
{
//1. 更新项目状态--已决策
await
DB
.
Project
.
update
({
projectLzType
:
13
},
{
where
:
{
id
:
req
.
body
.
id
}
});
//2. 存储快照 关联关系太多 全部建立快照表工程过大,暂时存储形式
proInfo
.
projectLzType
=
13
;
await
DB
.
ProjectLixiang
.
create
({
zaijuece
:
proInfo
,
type
:
3
,
projectId
:
proInfo
.
id
});
await
DB
.
FlowRecord
.
create
({
userId
:
req
.
user
.
id
,
actionName
:
'再决策审批通过'
,
projectId
:
project
.
id
,
});
}
else
{
//TODO:不确定
// //回到 已立项
// await DB.Project.update({ projectLzType: 5 }, { where: { id: req.body.id } });
// await DB.FlowRecord.create({
// userId: req.user.id,
// actionName: '再决策审批未通过',
// projectId: project.id,
// });
}
return
res
.
sendData
(
proInfo
);
}
catch
(
error
)
{
next
(
error
);
}
}
module
.
exports
=
{
getProjectFields
,
...
...
@@ -1165,4 +1266,8 @@ module.exports = {
approvalLixiang
,
approvalJuece
,
getProFlowRecord
,
getProjectFinalInfo
,
saveZaiJuece
,
startZaiJuece
,
approvalZaiJuece
,
}
\ No newline at end of file
db/model/jt/projectLixiang.js
View file @
e053c2e6
...
...
@@ -9,6 +9,12 @@ const ProjectLixiang = sequelize.define('ProjectLixiang', {
autoIncrement
:
true
},
lixiang
:{
type
:
DataTypes
.
JSON
},
juece
:{
type
:
DataTypes
.
JSON
},
zaijuece
:{
type
:
DataTypes
.
JSON
},
type
:
{
type
:
DataTypes
.
INTEGER
,
comment
:
"1 lixiang 2 juece"
},
projectId
:
{
type
:
DataTypes
.
INTEGER
,
comment
:
"所属项目ID"
,
...
...
@@ -25,9 +31,9 @@ const ProjectLixiang = sequelize.define('ProjectLixiang', {
// 同步模型到数据库(创建表)
ProjectLixiang
.
sync
({
force
:
false
,
//
force: false,
// force: true ,//会删除已存在表并重新创建
//
alter: true
alter
:
true
})
.
then
(()
=>
{
console
.
log
(
'ProjectLixiang 表同步成功'
);
...
...
router/projectRouter.js
View file @
e053c2e6
...
...
@@ -34,6 +34,7 @@ router.post('/getProjectCwpj', projectController.getProjectCwpj);
router
.
post
(
'/getProjectInfo'
,
projectController
.
getProjectInfo
);
router
.
post
(
'/getProjectFinalInfo'
,
projectController
.
getProjectFinalInfo
);
// router.post('/updateProject', projectController.updateProject);
// router.post('/deleteProject', projectController.deleteProject);
...
...
@@ -53,7 +54,7 @@ router.post('/getProFlowRecord', projectController.getProFlowRecord)
* 投中管理
*/
//2.1 目标责任书
//2.1 目标责任书
***
router
.
post
(
'/createTzmbzrs'
,
projectTzController
.
createTzmbzrs
);
router
.
post
(
'/updateTzmbzrs'
,
projectTzController
.
updateTzmbzrs
);
router
.
post
(
'/getTzmbzrsList'
,
projectTzController
.
getTzmbzrsList
);
...
...
@@ -62,15 +63,14 @@ router.post('/deleteTzmbzrs', projectTzController.deleteTzmbzrsInfo);
router
.
post
(
'/getProTzmbzrs'
,
projectTzController
.
getProTzmbzrs
);
//2.2 投资控制
//2.2 投资控制 ***
router
.
post
(
'/createTzkz'
,
projectTzController
.
createTzkz
);
router
.
post
(
'/updateTzkz'
,
projectTzController
.
updateTzkz
);
router
.
post
(
'/deleteTzkz'
,
projectTzController
.
deleteTzkz
);
router
.
post
(
'/getTzkzList'
,
projectTzController
.
getTzkzList
);
router
.
post
(
'/getTzkzInfo'
,
projectTzController
.
getTzkzInfo
);
//2.3 重大风险防控
//2.3 重大风险防控
***
router
.
post
(
'/createZdfx'
,
projectTzController
.
createZdfx
);
router
.
post
(
'/updateZdfx'
,
projectTzController
.
updateZdfx
);
router
.
post
(
'/deleteZdfx'
,
projectTzController
.
deleteZdfx
);
...
...
@@ -84,21 +84,26 @@ router.post('/deleteJsqtzhs', projectTzController.deleteJsqtzhs);
router
.
post
(
'/getJsqtzhsList'
,
projectTzController
.
getJsqtzhsList
);
router
.
post
(
'/getJsqtzhsInfo'
,
projectTzController
.
getJsqtzhsInfo
);
//2.5 建设期投资检查
//2.5 建设期投资检查
***
router
.
post
(
'/createJsqtzjc'
,
projectTzController
.
createJsqtzjc
);
router
.
post
(
'/updateJsqtzjc'
,
projectTzController
.
updateJsqtzjc
);
router
.
post
(
'/deleteJsqtzjc'
,
projectTzController
.
deleteJsqtzjc
);
router
.
post
(
'/getJsqtzjcList'
,
projectTzController
.
getJsqtzjcList
);
router
.
post
(
'/getJsqtzjcInfo'
,
projectTzController
.
getJsqtzjcInfo
);
//2.6 重大事项审批
//2.6 重大事项审批
***
router
.
post
(
'/createZdsxsp'
,
projectTzController
.
createZdsxsp
);
router
.
post
(
'/updateZdsxsp'
,
projectTzController
.
updateZdsxsp
);
router
.
post
(
'/deleteZdsxsp'
,
projectTzController
.
deleteZdsxsp
);
router
.
post
(
'/getZdsxspList'
,
projectTzController
.
getZdsxspList
);
router
.
post
(
'/getZdsxspInfo'
,
projectTzController
.
getZdsxspInfo
);
//2.7 重新决策
router
.
post
(
'/saveZaiJuece'
,
projectController
.
saveZaiJuece
);
//决策保存
router
.
post
(
'/startZaiJuece'
,
projectController
.
startZaiJuece
);
//发起决策
// router.post('/queryJueceResult', projectController.queryJueceResult); //查询决策审批结果
router
.
post
(
'/approvalZaiJuece'
,
projectController
.
approvalZaiJuece
);
//2.8 项目退出
-------以下sourceId待改
//2.8 项目退出
***
router
.
post
(
'/createXmtc'
,
projectTzController
.
createXmtc
);
router
.
post
(
'/updateXmtc'
,
projectTzController
.
updateXmtc
);
router
.
post
(
'/getXmtcList'
,
projectTzController
.
getXmtcList
);
...
...
@@ -109,19 +114,19 @@ router.post('/getXmtcInfo', projectTzController.getXmtcInfo);
* 投后
*/
//运营期投资回收 --- 参考建设期投资回收
//
3.1
运营期投资回收 --- 参考建设期投资回收
router
.
post
(
'/createYyqtzhs'
,
projectThController
.
createYyqtzhs
);
router
.
post
(
'/updateYyqtzhs'
,
projectThController
.
updateYyqtzhs
);
router
.
post
(
'/getYyqtzhsList'
,
projectThController
.
getYyqtzhsList
);
router
.
post
(
'/getYyqtzhsInfo'
,
projectThController
.
getYyqtzhsInfo
);
//3.2 运营期投资检查 参考建设期投资检查
//3.2 运营期投资检查 参考建设期投资检查
***
router
.
post
(
'/createYyqtzjc'
,
projectThController
.
createYyqtzjc
);
router
.
post
(
'/updateYyqtzjc'
,
projectThController
.
updateYyqtzjc
);
router
.
post
(
'/getYyqtzjcList'
,
projectThController
.
getYyqtzjcList
);
router
.
post
(
'/getYyqtzjcInfo'
,
projectThController
.
getYyqtzjcInfo
);
//3.3 投资后评价
//3.3 投资后评价
***
router
.
post
(
'/createTzhpj'
,
projectThController
.
createTzhpj
);
router
.
post
(
'/updateTzhpj'
,
projectThController
.
updateTzhpj
);
router
.
post
(
'/getTzhpjList'
,
projectThController
.
getTzhpjList
);
...
...
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