明树Git Lab

Commit 4f029b6c authored by zfp1's avatar zfp1

1

parent 0c867a64
Pipeline #105767 passed with stage
in 3 seconds
...@@ -290,7 +290,25 @@ async function startLixiang(req, res, next) { ...@@ -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); return res.sendData(ret);
} catch (error) { } catch (error) {
...@@ -325,6 +343,40 @@ async function queryLixiangResult(req, res, next) { ...@@ -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) { ...@@ -415,7 +467,7 @@ async function xiangmujuecegengxin(body, projectLzType) {
await Promise.all(pns11.map(item => { DB.ProjectZqrz.update(item, { where: { id: item.id } }) })); await Promise.all(pns11.map(item => { DB.ProjectZqrz.update(item, { where: { id: item.id } }) }));
// 处理决策审批意见 ProjectSpyjjc // 处理决策审批意见 ProjectSpyjjc
let projectSpyjjcs = body.projectSpyjjcs || []; 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 }); 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.destroy({ where: { projectId: projectInfo.id, id: { [Op.notIn]: pnids12 } } });
await DB.ProjectSpyjjc.bulkCreate(newprojectSpyjjcs); await DB.ProjectSpyjjc.bulkCreate(newprojectSpyjjcs);
...@@ -492,12 +544,27 @@ async function startJuece(req, res, next) { ...@@ -492,12 +544,27 @@ async function startJuece(req, res, next) {
if (!req.body.id) { if (!req.body.id) {
return res.sendError(errorMessage.resourceNotFound) return res.sendError(errorMessage.resourceNotFound)
} }
let ret = await xiangmujuecegengxin(req.body, 8); //决策审批中
// 给审批人员发消息
await DB.FlowRecord.create({ await DB.FlowRecord.create({
userId: req.user.id, userId: req.user.id,
actionName: '发起项目决策审批', actionName: '发起项目决策审批',
projectId: req.body.id, 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); return res.sendData(ret);
} catch (error) { } catch (error) {
next(error); next(error);
...@@ -528,6 +595,39 @@ async function queryJueceResult(req, res, next) { ...@@ -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 * @param {*} req
...@@ -596,11 +696,11 @@ async function updateProject(req, res, next) { ...@@ -596,11 +696,11 @@ async function updateProject(req, res, next) {
// await DB.ProjectJczt.bulkCreate(newprojectJczts); // await DB.ProjectJczt.bulkCreate(newprojectJczts);
// await Promise.all(pns7.map(item => { DB.ProjectJczt.update(item, { where: { id: item.id } }) })); // await Promise.all(pns7.map(item => { DB.ProjectJczt.update(item, { where: { id: item.id } }) }));
// // // 处理 projectZqrz // // // 处理 projectZqrz
// let projectZqrzs = body.projectZqrzs || []; // let projectZqrzs = body.projectZqrzs || [];
// let pnids8 = [], newprojectZqrzs = []; // let pnids8 = [], newprojectZqrzs = [];
// projectZqrzs.map(o => { if (!o.id) { o.projectId = project.id; newprojectZqrzs.push(o); } else { pnids8.push(o.id) } return o }); // 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.destroy({ where: { projectId: project.id, id: { [Op.notIn]: pnids8 } } });
// await DB.ProjectZqrz.bulkCreate(newprojectZqrzs); // await DB.ProjectZqrz.bulkCreate(newprojectZqrzs);
// // 处理 projectSpyjs // // 处理 projectSpyjs
// let projectSpyjs = body.projectSpyjs || []; // let projectSpyjs = body.projectSpyjs || [];
// let pnids9 = [], pns9 = [], newprojectSpyjs = []; // let pnids9 = [], pns9 = [], newprojectSpyjs = [];
...@@ -820,7 +920,7 @@ async function getProjectInfo(req, res, next) { ...@@ -820,7 +920,7 @@ async function getProjectInfo(req, res, next) {
order: [['createdAt', 'DESC']], order: [['createdAt', 'DESC']],
where: { projectId: req.body.id }, where: { projectId: req.body.id },
}); });
if(!(ret && ret.id)) { if (!(ret && ret.id)) {
return res.sendError(errorMessage.resourceNotFound); return res.sendError(errorMessage.resourceNotFound);
} }
let obj = {}; let obj = {};
...@@ -829,7 +929,7 @@ async function getProjectInfo(req, res, next) { ...@@ -829,7 +929,7 @@ async function getProjectInfo(req, res, next) {
obj.lixiang = lixiang.lixiang; //快照 obj.lixiang = lixiang.lixiang; //快照
//当项目状态 进入决策信息填报时候 //当项目状态 进入决策信息填报时候
if ([7, 8, 9].includes(ret && ret.projectLzType)) { if ([7, 8, 9].includes(ret && ret.projectLzType)) {
obj.juece = ret; obj.juece = ret;
} }
} else { } else {
obj.lixiang = ret; //这里就只有立项 决策的数据一旦开始填报 证明一定有ProjectLixiang lixiang obj.lixiang = ret; //这里就只有立项 决策的数据一旦开始填报 证明一定有ProjectLixiang lixiang
...@@ -1051,4 +1151,6 @@ module.exports = { ...@@ -1051,4 +1151,6 @@ module.exports = {
queryLixiangResult, queryLixiangResult,
queryJueceResult, queryJueceResult,
getProjectCwpj, getProjectCwpj,
approvalLixiang,
approvalJuece,
} }
\ No newline at end of file
...@@ -133,6 +133,15 @@ async function setRoleMenu(roleId, menuIds, rolemenus) { ...@@ -133,6 +133,15 @@ async function setRoleMenu(roleId, menuIds, rolemenus) {
async function getProjectApprover(userId, roleCode) { 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 } }); let user = await DB.User.findOne({ where: { id: userId } });
return [user]; return [user];
......
...@@ -20,12 +20,14 @@ router.post('/saveProjectPreLixiang', projectController.saveProjectPreLixiang); ...@@ -20,12 +20,14 @@ router.post('/saveProjectPreLixiang', projectController.saveProjectPreLixiang);
router.post('/startLixiang', projectController.startLixiang);//发起立项审批----TODO:待完成与能建对接 router.post('/startLixiang', projectController.startLixiang);//发起立项审批----TODO:待完成与能建对接
router.post('/queryLixiangResult', projectController.queryLixiangResult); router.post('/queryLixiangResult', projectController.queryLixiangResult);
router.post('/approvalLixiang', projectController.approvalLixiang);
// -----------------------接收能建立项结果信息,更新立项批复信息等字段------------------------------------------ // -----------------------接收能建立项结果信息,更新立项批复信息等字段------------------------------------------
router.post('/saveJuece', projectController.saveJuece); //决策保存 router.post('/saveJuece', projectController.saveJuece); //决策保存
router.post('/startJuece', projectController.startJuece); //发起决策 router.post('/startJuece', projectController.startJuece); //发起决策
router.post('/queryJueceResult', projectController.queryJueceResult); //查询决策审批结果 router.post('/queryJueceResult', projectController.queryJueceResult); //查询决策审批结果
router.post('/approvalJuece', projectController.approvalJuece);
// 财务评价 // 财务评价
router.post('/getProjectCwpj', projectController.getProjectCwpj); router.post('/getProjectCwpj', projectController.getProjectCwpj);
......
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