明树Git Lab

Commit d136765c authored by zfp1's avatar zfp1

update

parent aa5764b5
Pipeline #104504 passed with stage
in 3 seconds
......@@ -120,13 +120,13 @@ async function createProject(req, res, next) {
// 处理 projectTzzjll-----
// 立项资料
let lxzl = body.lxzl || [];
let lxzl = _.compact(body.lxzl || []);
lxzl = lxzl.map(o => { return { fileId: o.id, projectId: project.id, proFieldKey: 'lxzl' } });
// 立项批复文件
let lxpfwj = body.lxpfwj || [];
let lxpfwj = _.compact(body.lxpfwj || []);
lxpfwj = lxpfwj.map(o => { return { fileId: o.id, projectId: project.id, proFieldKey: 'lxpfwj' } });
// 相关上会材料
let xgshcl = body.xgshcl || [];
let xgshcl = _.compact(body.xgshcl || []);
xgshcl = xgshcl.map(o => { return { fileId: o.id, projectId: project.id, proFieldKey: 'xgshcl' } });
// 处理文件
let proFiles = _.concat(lxzl, lxpfwj, xgshcl);
......@@ -225,14 +225,14 @@ async function xiangmulixianggengxin(body, projectLzType) {
// 立项资料
let lxzl = body.lxzl || [];
let lxzl = _.compact(body.lxzl || []);
let needIds = []; let createIds = [];
lxzl.map(o => { if (!o.proFieldKey) { createIds.push({ id: o.id, proFieldKey: 'lxzl' }) } else { needIds.push(o.id) }; return { fileId: o.id, projectId: projectInfo.id, proFieldKey: 'lxzl' } });
// 立项批复文件
let lxpfwj = body.lxpfwj || [];
let lxpfwj = _.compact(body.lxpfwj || []);
lxpfwj.map(o => { if (!o.proFieldKey) { createIds.push({ id: o.id, proFieldKey: 'lxpfwj' }) } else { needIds.push(o.id) }; return { fileId: o.id, projectId: projectInfo.id, proFieldKey: 'lxpfwj' } });
// 相关上会材料
let xgshcl = body.xgshcl || [];
let xgshcl = _.compact(body.xgshcl || []);
xgshcl.map(o => { if (!o.proFieldKey) { createIds.push({ id: o.id, proFieldKey: 'xgshcl' }) } else { needIds.push(o.id) }; return { fileId: o.id, projectId: projectInfo.id, proFieldKey: 'xgshcl' } });
// 处理文件
//1. 删除
......@@ -421,29 +421,29 @@ async function xiangmujuecegengxin(body, projectLzType) {
await Promise.all(pns9.map(item => { DB.ProjectSpyjjc.update(item, { where: { id: item.id } }) }));
// 立项资料
let lxzl = body.lxzl || [];
let lxzl = _.compact(body.lxzl || []);
let needIds = []; let createIds = [];
lxzl.map(o => { if (!o.proFieldKey) { createIds.push({ id: o.id, proFieldKey: 'lxzl' }) } else { needIds.push(o.id) }; return { fileId: o.id, projectId: projectInfo.id, proFieldKey: 'lxzl' } });
// 立项批复文件
let lxpfwj = body.lxpfwj || [];
let lxpfwj = _.compact(body.lxpfwj || []);
lxpfwj.map(o => { if (!o.proFieldKey) { createIds.push({ id: o.id, proFieldKey: 'lxpfwj' }) } else { needIds.push(o.id) }; return { fileId: o.id, projectId: projectInfo.id, proFieldKey: 'lxpfwj' } });
// 相关上会材料
let xgshcl = body.xgshcl || [];
let xgshcl = _.compact(body.xgshcl || []);
xgshcl.map(o => { if (!o.proFieldKey) { createIds.push({ id: o.id, proFieldKey: 'xgshcl' }) } else { needIds.push(o.id) }; return { fileId: o.id, projectId: projectInfo.id, proFieldKey: 'xgshcl' } });
// 可研材料
let kycl = body.kycl || [];
let kycl = _.compact(body.kycl || []);
kycl.map(o => { if (!o.proFieldKey) { createIds.push({ id: o.id, proFieldKey: 'kycl' }) } else { needIds.push(o.id) }; return { fileId: o.id, projectId: projectInfo.id, proFieldKey: 'kycl' } });
// 经济指标初步测算材料
let jjzbcbcscl = body.jjzbcbcscl || [];
let jjzbcbcscl = _.compact(body.jjzbcbcscl || []);
jjzbcbcscl.map(o => { if (!o.proFieldKey) { createIds.push({ id: o.id, proFieldKey: 'jjzbcbcscl' }) } else { needIds.push(o.id) }; return { fileId: o.id, projectId: projectInfo.id, proFieldKey: 'jjzbcbcscl' } });
// 补充相关支撑材料
let bcxgzccl = body.bcxgzccl || [];
let bcxgzccl = _.compact(body.bcxgzccl || []);
bcxgzccl.map(o => { if (!o.proFieldKey) { createIds.push({ id: o.id, proFieldKey: 'bcxgzccl' }) } else { needIds.push(o.id) }; return { fileId: o.id, projectId: projectInfo.id, proFieldKey: 'bcxgzccl' } });
// 其他相关支撑材料
let qtxgzccl = body.qtxgzccl || [];
let qtxgzccl = _.compact(body.qtxgzccl || []);
qtxgzccl.map(o => { if (!o.proFieldKey) { createIds.push({ id: o.id, proFieldKey: 'qtxgzccl' }) } else { needIds.push(o.id) }; return { fileId: o.id, projectId: projectInfo.id, proFieldKey: 'qtxgzccl' } });
// 上会议案
let shya = body.shya || [];
let shya = _.compact(body.shya || []);
shya.map(o => { if (!o.proFieldKey) { createIds.push({ id: o.id, proFieldKey: 'shya' }) } else { needIds.push(o.id) }; return { fileId: o.id, projectId: projectInfo.id, proFieldKey: 'shya' } });
// 处理文件
//1. 删除
......
......@@ -12,7 +12,7 @@ async function createResource(req, res, next) {
let ret = await DB.Resources.create(body);
ret = ret.toJSON();
if (body.resourceInfos && body.resourceInfos.length && ret.id) {
if(body.type == 1){
if (body.type == 1) {
let ris = [];
for (let index = 0; index < body.resourceInfos.length; index++) {
const element = body.resourceInfos[index];
......@@ -21,7 +21,7 @@ async function createResource(req, res, next) {
}
console.log(ris, "===")
await DB.ResourcesInfo.bulkCreate(ris);
} else if(body.type == 2) {
} else if (body.type == 2) {
//树结构
let ris = [];
let data = utils.flattenTreeIterative(body.resourceInfos);
......@@ -240,7 +240,10 @@ async function listResourceAll(req, res, next) {
element = element.toJSON()
// console.log(element.resourcesInfos, "==")
if (element.type == 2) {
element.resourcesInfos = utils.buildTree2(element.resourcesInfos, 'code', 'parentCode');
element.resourcesInfos = utils.buildTree2(element.resourcesInfos, {
keyName: "code",
parentKeyName: 'parentCode',
});
}
obj[element.key] = _.orderBy(element.resourcesInfos || [], 'order', 'asc');
}
......
......@@ -59,8 +59,8 @@ async function handleProjectData(ret, queryAttrs) {
// console.log(resMap[String(element[key])], String(element[key]), "=========================")
element[key] = resMap[String(element[key])];
} else if (rawAttributes[key].zjType == "duoxuan") {
if(_.isArray(element[key]) && element[key].length > 0) {
element[key].map(o => {return resMap[o]});
if (_.isArray(element[key]) && element[key].length > 0) {
element[key].map(o => { return resMap[o] });
element[key] = element[key].join(',')
}
}
......@@ -80,7 +80,7 @@ async function handleProjectData(ret, queryAttrs) {
async function getResourceInfoByIds(resouInfoIds) {
let ris = await DB.ResourcesInfo.findAll({
where: {id: {[Op.in]: resouInfoIds}},
where: { id: { [Op.in]: resouInfoIds } },
// raw: true,
});
let risMap = {};
......@@ -203,19 +203,22 @@ async function getProjectInfo({ id }) {
return {};
}
project = project.toJSON();
project.projectBjtjs = await DB.ProjectBjtj.findAll({where:{projectId: id}, raw: true});
project.projectCwpjzbs = await DB.ProjectCwpjzb.findAll({where:{projectId: id}, raw: true});
project.projectFxgls = await DB.ProjectFxgl.findAll({where:{projectId: id}, raw: true});
project.projectGdxxs = await DB.ProjectGdxx.findAll({where:{projectId: id}, raw: true});
project.projectJczts = await DB.ProjectJczt.findAll({where:{projectId: id}, raw: true});
project.projectJsgms = await DB.ProjectJsgm.findAll({where:{projectId: id}, raw: true});
project.projectLcbjds = await DB.ProjectLcbjd.findAll({where:{projectId: id}, raw: true});
project.projectSpyjs = await DB.ProjectSpyj.findAll({where:{projectId: id}, raw: true});
project.projectTzzjlls = await DB.ProjectTzzjll.findAll({where:{projectId: id}, raw: true});
project.projectTzzts = await DB.ProjectTzzt.findAll({where:{projectId: id}, raw: true});
project.projectXmtzzes = await DB.ProjectXmtzze.findAll({where:{projectId: id}, raw: true});
// let files = await DB.ProjectXmtzze.findAll({projectId: id});
project.projectXmtzzes = utils.buildTree2(project.projectXmtzzes, 'xh', 'parentXh');
project.projectBjtjs = await DB.ProjectBjtj.findAll({ where: { projectId: id }, raw: true });
project.projectCwpjzbs = await DB.ProjectCwpjzb.findAll({ where: { projectId: id }, raw: true });
project.projectFxgls = await DB.ProjectFxgl.findAll({ where: { projectId: id }, raw: true });
project.projectGdxxs = await DB.ProjectGdxx.findAll({ where: { projectId: id }, raw: true });
project.projectJczts = await DB.ProjectJczt.findAll({ where: { projectId: id }, raw: true });
project.projectJsgms = await DB.ProjectJsgm.findAll({ where: { projectId: id }, raw: true });
project.projectLcbjds = await DB.ProjectLcbjd.findAll({ where: { projectId: id }, raw: true });
project.projectSpyjs = await DB.ProjectSpyj.findAll({ where: { projectId: id }, raw: true });
project.projectTzzjlls = await DB.ProjectTzzjll.findAll({ where: { projectId: id }, raw: true });
project.projectTzzts = await DB.ProjectTzzt.findAll({ where: { projectId: id }, raw: true });
project.projectXmtzzes = await DB.ProjectXmtzze.findAll({ where: { projectId: id }, raw: true });
project.projectXmtzzes = utils.buildTree2(project.projectXmtzzes, {
keyName: "xh",
parentKeyName: 'parentXh',
});
//处理文件 还原成项目各个字段拥有的文件
let files = project.files || [];
......@@ -282,7 +285,10 @@ async function getProjectInfoByLixiang({ id }) {
// raw: true
});
project = project.toJSON();
project.projectXmtzzes = utils.buildTree2(project.projectXmtzzes, 'xh', 'parentXh');
project.projectXmtzzes = utils.buildTree2(project.projectXmtzzes, {
keyName: "xh",
parentKeyName: 'parentXh',
});
//处理文件 还原成项目各个字段拥有的文件
let files = project.files || [];
......
......@@ -129,26 +129,54 @@ function flattenTree(forest, idDes = 'id', parentIdDes = 'parentId') {
return result;
}
//
function buildTree2(nodes, keyid = 'id', keyParentId = 'parentId') {
// 创建一个映射,将节点ID映射到节点对象
const nodeMap = new Map(nodes.map(node => [String(node[keyid]), { ...node, children: [] }]));
// 遍历所有节点,并将它们添加到对应父节点的children数组中
function buildTree2(nodes, options = {}) {
// 合并配置和默认值
const {
keyName = 'id',
parentKeyName = 'parentId',
orderField = 'order',
filter = node => node.del === 0
} = options;
// 创建节点映射表(使用Map提升性能)
const nodeMap = new Map();
nodes.forEach(node => {
const parentId = String(node[keyParentId]);
if (parentId !== null) {
// 确保父节点在映射中存在
if (nodeMap.has(parentId)) {
// 将当前节点添加到父节点的children数组中
nodeMap.get(parentId).children.push(nodeMap.get(String(node[keyid])));
nodeMap.get(parentId).children = _.orderBy(nodeMap.get(parentId).children, ['order', 'code'])
if (!filter(node)) return;
nodeMap.set(String(node[keyName]), {
...node,
children: []
});
});
// 构建树形结构
const roots = [];
nodeMap.forEach((node, nodeId) => {
const parentRef = String(node[parentKeyName]);
// 处理根节点
if (!parentRef || parentRef === 'null' || parentRef === 'undefined') {
roots.push(node);
return;
}
// 处理子节点
if (nodeMap.has(parentRef)) {
const parent = nodeMap.get(parentRef);
parent.children.push(node);
// 子节点排序(使用稳定排序)
if (parent.children.length > 1) {
parent.children.sort((a, b) =>
(a[orderField] || 0) - (b[orderField] || 0)
);
}
}
});
// 从映射中提取顶级节点(parentId为null)
return _.orderBy(Array.from(nodeMap.values()).filter(node => node[keyParentId] == null), ['order', 'code']);
// 根节点排序
return roots.sort((a, b) =>
(a[orderField] || 0) - (b[orderField] || 0)
);
}
......
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