明树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) {
});
//更新信息和状态
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
......@@ -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];
......
......@@ -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);
......
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