人力资源
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

192 lines
8.6 KiB

'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
}