明树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
4f029b6c
Commit
4f029b6c
authored
Jan 07, 2026
by
zfp1
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1
parent
0c867a64
Pipeline
#105767
passed with stage
in 3 seconds
Changes
3
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
124 additions
and
11 deletions
+124
-11
projectController.js
controller/projectController.js
+112
-10
userModule.js
module/userModule.js
+9
-0
projectRouter.js
router/projectRouter.js
+3
-1
No files found.
controller/projectController.js
View file @
4f029b6c
...
...
@@ -290,7 +290,25 @@ async function startLixiang(req, res, next) {
});
//更新信息和状态
let
ret
=
await
xiangmulixianggengxin
(
req
.
body
,
3
);
//状态 3 -- 显示立项审批中
let
ret
=
await
xiangmulixianggengxin
(
req
.
body
,
3
);
//状态 3 -- 立项审批中
// 给审批人员发消息
await
DB
.
FlowRecord
.
create
({
userId
:
req
.
user
.
id
,
actionName
:
'发起项目立项'
,
projectId
:
project
.
id
,
});
let
approvers
=
await
userModule
.
getProjectApprover
(
req
.
user
.
id
,
'xmlx_sp'
);
if
(
!
(
approvers
&&
approvers
.
length
>
0
))
{
return
res
.
sendError
({
code
:
'60001'
,
msg
:
'项目已保存,请联系管理员为本公司添加【项目立项】角色人员'
});
}
await
DB
.
Message
.
create
({
projectId
:
project
.
id
,
creator
:
req
.
user
.
id
,
receivers
:
approvers
.
map
(
o
=>
o
.
id
),
type
:
2
,
title
:
`项目【
${
project
.
name
}
】已发起立项,请尽快处理!`
,
content
:
`项目【
${
project
.
name
}
】已发起立项,请尽快处理!`
});
return
res
.
sendData
(
ret
);
}
catch
(
error
)
{
...
...
@@ -325,6 +343,40 @@ async function queryLixiangResult(req, res, next) {
}
}
/**
* 立项审批
* @param {*} body
* @param {*} projectLzType
* @returns
*/
async
function
approvalLixiang
(
req
,
res
,
next
)
{
try
{
let
proInfo
=
await
projectModule
.
getProjectInfoByLixiang
(
req
.
body
);
if
(
req
.
body
.
approvalResult
)
{
//1. 更新项目状态--已立项
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
.
FlowRecord
.
create
({
userId
:
req
.
user
.
id
,
actionName
:
'立项审批通过'
,
projectId
:
project
.
id
,
});
}
else
{
//待立项
await
DB
.
Project
.
update
({
projectLzType
:
1
},
{
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
);
}
}
...
...
@@ -415,7 +467,7 @@ async function xiangmujuecegengxin(body, projectLzType) {
await
Promise
.
all
(
pns11
.
map
(
item
=>
{
DB
.
ProjectZqrz
.
update
(
item
,
{
where
:
{
id
:
item
.
id
}
})
}));
// 处理决策审批意见 ProjectSpyjjc
let
projectSpyjjcs
=
body
.
projectSpyjjcs
||
[];
let
pnids12
=
[],
newprojectSpyjjcs
=
[];
let
pnids12
=
[],
newprojectSpyjjcs
=
[];
projectSpyjjcs
.
map
(
o
=>
{
if
(
!
o
.
id
)
{
if
(
!
_
.
isEmpty
(
o
))
{
o
.
projectId
=
projectInfo
.
id
;
newprojectSpyjjcs
.
push
(
o
);
}
}
else
{
pnids12
.
push
(
o
.
id
);
pnids12
.
push
(
o
);
}
return
o
});
await
DB
.
ProjectSpyjjc
.
destroy
({
where
:
{
projectId
:
projectInfo
.
id
,
id
:
{
[
Op
.
notIn
]:
pnids12
}
}
});
await
DB
.
ProjectSpyjjc
.
bulkCreate
(
newprojectSpyjjcs
);
...
...
@@ -492,12 +544,27 @@ async function startJuece(req, res, next) {
if
(
!
req
.
body
.
id
)
{
return
res
.
sendError
(
errorMessage
.
resourceNotFound
)
}
let
ret
=
await
xiangmujuecegengxin
(
req
.
body
,
8
);
//决策审批中
// 给审批人员发消息
await
DB
.
FlowRecord
.
create
({
userId
:
req
.
user
.
id
,
actionName
:
'发起项目决策审批'
,
projectId
:
req
.
body
.
id
,
});
let
ret
=
await
xiangmujuecegengxin
(
req
.
body
,
8
);
//决策审批中
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
:
project
.
id
,
creator
:
req
.
user
.
id
,
receivers
:
approvers
.
map
(
o
=>
o
.
id
),
type
:
2
,
title
:
`项目【
${
project
.
name
}
】已发起项目决策,请尽快处理!`
,
content
:
`项目【
${
project
.
name
}
】已发起项目决策,请尽快处理!`
});
return
res
.
sendData
(
ret
);
}
catch
(
error
)
{
next
(
error
);
...
...
@@ -528,6 +595,39 @@ async function queryJueceResult(req, res, next) {
}
/**
* 决策审批
*/
async
function
approvalJuece
(
req
,
res
,
next
)
{
try
{
let
proInfo
=
await
projectModule
.
getProjectInfoByLixiang
(
req
.
body
);
if
(
req
.
body
.
approvalResult
)
{
//1. 更新项目状态--已决策
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
.
FlowRecord
.
create
({
userId
:
req
.
user
.
id
,
actionName
:
'决策审批通过'
,
projectId
:
project
.
id
,
});
}
else
{
//回到 已立项
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
);
}
}
/**
* 更新提交 更新
* @param {*} req
...
...
@@ -596,11 +696,11 @@ async function updateProject(req, res, next) {
// await DB.ProjectJczt.bulkCreate(newprojectJczts);
// await Promise.all(pns7.map(item => { DB.ProjectJczt.update(item, { where: { id: item.id } }) }));
// // // 处理 projectZqrz
// let projectZqrzs = body.projectZqrzs || [];
// let pnids8 = [], newprojectZqrzs = [];
// projectZqrzs.map(o => { if (!o.id) { o.projectId = project.id; newprojectZqrzs.push(o); } else { pnids8.push(o.id) } return o });
// await DB.ProjectZqrz.destroy({ where: { projectId: project.id, id: { [Op.notIn]: pnids8 } } });
// await DB.ProjectZqrz.bulkCreate(newprojectZqrzs);
// let projectZqrzs = body.projectZqrzs || [];
// let pnids8 = [], newprojectZqrzs = [];
// projectZqrzs.map(o => { if (!o.id) { o.projectId = project.id; newprojectZqrzs.push(o); } else { pnids8.push(o.id) } return o });
// await DB.ProjectZqrz.destroy({ where: { projectId: project.id, id: { [Op.notIn]: pnids8 } } });
// await DB.ProjectZqrz.bulkCreate(newprojectZqrzs);
// // 处理 projectSpyjs
// let projectSpyjs = body.projectSpyjs || [];
// let pnids9 = [], pns9 = [], newprojectSpyjs = [];
...
...
@@ -820,7 +920,7 @@ async function getProjectInfo(req, res, next) {
order
:
[[
'createdAt'
,
'DESC'
]],
where
:
{
projectId
:
req
.
body
.
id
},
});
if
(
!
(
ret
&&
ret
.
id
))
{
if
(
!
(
ret
&&
ret
.
id
))
{
return
res
.
sendError
(
errorMessage
.
resourceNotFound
);
}
let
obj
=
{};
...
...
@@ -829,7 +929,7 @@ async function getProjectInfo(req, res, next) {
obj
.
lixiang
=
lixiang
.
lixiang
;
//快照
//当项目状态 进入决策信息填报时候
if
([
7
,
8
,
9
].
includes
(
ret
&&
ret
.
projectLzType
))
{
obj
.
juece
=
ret
;
obj
.
juece
=
ret
;
}
}
else
{
obj
.
lixiang
=
ret
;
//这里就只有立项 决策的数据一旦开始填报 证明一定有ProjectLixiang lixiang
...
...
@@ -1051,4 +1151,6 @@ module.exports = {
queryLixiangResult
,
queryJueceResult
,
getProjectCwpj
,
approvalLixiang
,
approvalJuece
,
}
\ No newline at end of file
module/userModule.js
View file @
4f029b6c
...
...
@@ -133,6 +133,15 @@ async function setRoleMenu(roleId, menuIds, rolemenus) {
async
function
getProjectApprover
(
userId
,
roleCode
)
{
// 获取当前用户公司的 具体角色 的用户列表
// let role = await DB.Role.findOne({where: {key: roleCode}, raw: true});
// if(!(role && role.id)) {
// return [];
// }
// let userIds = await DB.UserRole.findAll({where: {roleId: role.id}, raw: true});
// userIds = (userIds || []).map(o => {return o.userId});
// let users = await DB.User.findAll({ where: { id: {[Op.in]: userIds} } });
// return users;
let
user
=
await
DB
.
User
.
findOne
({
where
:
{
id
:
userId
}
});
return
[
user
];
...
...
router/projectRouter.js
View file @
4f029b6c
...
...
@@ -20,12 +20,14 @@ router.post('/saveProjectPreLixiang', projectController.saveProjectPreLixiang);
router
.
post
(
'/startLixiang'
,
projectController
.
startLixiang
);
//发起立项审批----TODO:待完成与能建对接
router
.
post
(
'/queryLixiangResult'
,
projectController
.
queryLixiangResult
);
router
.
post
(
'/approvalLixiang'
,
projectController
.
approvalLixiang
);
// -----------------------接收能建立项结果信息,更新立项批复信息等字段------------------------------------------
router
.
post
(
'/saveJuece'
,
projectController
.
saveJuece
);
//决策保存
router
.
post
(
'/startJuece'
,
projectController
.
startJuece
);
//发起决策
router
.
post
(
'/queryJueceResult'
,
projectController
.
queryJueceResult
);
//查询决策审批结果
router
.
post
(
'/approvalJuece'
,
projectController
.
approvalJuece
);
// 财务评价
router
.
post
(
'/getProjectCwpj'
,
projectController
.
getProjectCwpj
);
...
...
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