'use strict'; const moment = require('moment') async function getResourceClassify(ctx) { try { const { models } = ctx.fs.dc; let rlst = []; rlst = [{ label: "公司培训资料", value: "company", key: "公司培训资料", operation: true, children: [] }, { label: "部门培训资料", value: 'dept', key: '部门培训资料', operation: false, children: [] }]; const findObj = { order: [["departmentName", "asc"]] } const filterData = (arrayData, arrIndex, operation) => { if (arrayData.length) { for (let level of arrayData) { const { departmentName, trainDate } = level.dataValues; /** departmentName:2级,trainDate:3级 */ if (departmentName) { if (trainDate) { const trainDateLabel = 'object' == typeof trainDate ? moment(trainDate).format('YYYY-MM') : trainDate; const depKey = rlst[arrIndex].label + '/' + departmentName //区分2级是否记录 if (rlst[arrIndex].children) { const depIndex = rlst[arrIndex].children.findIndex(r => r.key == depKey); if (depIndex > -1) { const dateKey = rlst[arrIndex].label + '/' + rlst[arrIndex].children[depIndex].label + '/' + trainDateLabel; if (rlst[arrIndex].children[depIndex].children) { const dateIndex = rlst[arrIndex].children[depIndex].children.findIndex(r => r.key == dateKey); if (dateIndex == -1) { rlst[arrIndex].children[depIndex].children.push({ label: trainDateLabel, value: dateKey, key: dateKey, operation }); } } else { rlst[arrIndex].children[depIndex].children = [{ label: trainDateLabel, value: dateKey, key: dateKey, operation }] } } else { rlst[arrIndex].children.push({ label: departmentName, value: depKey, key: depKey, operation, children: [{ label: trainDateLabel, value: depKey + '/' + trainDateLabel, key: depKey + '/' + trainDateLabel, operation }] }); } } else { rlst[arrIndex].children = [{ label: departmentName, value: depKey, key: depKey, operation, children: [{ label: trainDateLabel, value: depKey + '/' + trainDateLabel, key: depKey + '/' + trainDateLabel, operation }] }] } } else { //只有2级目录的情况 if (rlst[arrIndex].children) { const depIndex = rlst[arrIndex].children.findIndex(r => r.key == rlst[arrIndex].label + '/' + departmentName); if (depIndex == -1) { rlst[arrIndex].children.push({ label: departmentName, value: rlst[arrIndex].label + '/' + departmentName, key: rlst[arrIndex].label + '/' + departmentName, operation, children: [] }) } } else { rlst[arrIndex].children = [{ value: rlst[arrIndex].label + '/' + departmentName, key: rlst[arrIndex].label + '/' + departmentName, operation, children: [] }] } } } } } } const deptTraining = await models.DeptTraining.findAll(findObj); if (deptTraining.length) { filterData(deptTraining, 1, false); } const trainingInformation = await models.TrainingInformation.findAll(findObj); if (trainingInformation.length) { filterData(trainingInformation, 0, true); } ctx.status = 200; ctx.body = rlst; } catch (error) { ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); ctx.status = 400; ctx.body = { message: '查询培训资源储备库分类目录失败' } } } /**查询培训资源储备库文件列表 * query * limit、offset * type : 文件分类,必填,{公司培训资料/部门培训资料} * departmentName:二级目录 * trainDate:三级目录 */ async function getResourceFileList(ctx, next) { try { const { models } = ctx.fs.dc; const { limit, offset, type, departmentName, trainDate } = ctx.query; let rlst = []; if (["公司培训资料", "部门培训资料"].includes(type)) { const findObj = { attributes: ["id", "fileType", "fileName", "fileSize", "updateDate", "attachPath"], order: [["departmentName", "desc"]] }; if (Number(limit) > 0 && Number(offset) >= 0) { findObj.limit = Number(limit); findObj.offset = Number(offset); } if (departmentName) { const where = { departmentName: departmentName } if (trainDate) { //todo // where.trainDate = trainDate } findObj.where = where; } if ("公司培训资料" == type) { rlst = await models.TrainingInformation.findAndCountAll(findObj); } else { rlst = await models.DeptTraining.findAndCountAll(findObj); } } else { ctx.throw("培训资料范围为公司或部门"); } ctx.status = 200; ctx.body = rlst; } catch (err) { ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); ctx.status = 400; ctx.body = { message: err.message || '查询培训资源储备库文件列表失败' } } } async function postResourceClassify(ctx) { try { const { models } = ctx.fs.dc; const { departmentName, trainDate } = ctx.request.body; if (departmentName && '' != departmentName) { const where = { departmentName: departmentName }; if (trainDate && '' != trainDate) { where.trainDate = trainDate; } const oldData = await models.TrainingInformation.findOne(where); } ctx.status = 204; } catch (err) { ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); ctx.status = 400; ctx.body = { message: err.message || '查询培训资源储备库文件列表失败' } } } module.exports = { getResourceClassify, getResourceFileList, postResourceClassify }