|
@@ -1,133 +0,0 @@
|
|
|
-'use strict';
|
|
|
-
|
|
|
-const XLSX = require('xlsx');
|
|
|
-const Service = require('egg').Service;
|
|
|
-
|
|
|
-class ExcelimportService extends Service {
|
|
|
-
|
|
|
- constructor(ctx) {
|
|
|
- super(ctx);
|
|
|
- this.appid = '';
|
|
|
- }
|
|
|
-
|
|
|
- // 获取导入的XLSX文件中的数据
|
|
|
- async getImportXLSXData(elem) {
|
|
|
- // 导入学籍的情况
|
|
|
- if (elem.type === '0') {
|
|
|
- const filepath = this.ctx.app.config.baseDirImp + elem.content;
|
|
|
- const file = await this.ctx.curl(filepath);
|
|
|
- console.log(11111);
|
|
|
- console.log(file.data);
|
|
|
- const workbook = XLSX.read(file.data);
|
|
|
- // 读取内容
|
|
|
- const sheetNames = workbook.SheetNames; // 获取所有sheet页
|
|
|
- const sheet = workbook.Sheets[sheetNames[0]]; // 通过取得当前sheet页
|
|
|
- // const theadRule = [ sheet.A1.v, sheet.B1.v, sheet.C1.v, sheet.D1.v, sheet.E1.v, sheet.F1.v, sheet.G1.v, sheet.H1.v, sheet.I1.v, sheet.J1.v, sheet.K1.v, sheet.L1.v, sheet.M1.v, sheet.N1.v, sheet.O1.v, sheet.P1.v ];
|
|
|
- const params = XLSX.utils.sheet_to_json(sheet); // 通过工具将表对象的数据读出来并转成json
|
|
|
- // const theadRule = [ '序号', '院系', '班级', '专业代码', '专业名称', '学号', '姓名', '身份证号', '性别', '学历代码', '学历名称', '毕业年份', '民族', '电话号码', '生源所在地', '政治面貌' ];
|
|
|
- if (!params) return [];
|
|
|
- // 取得配置文件中学生描述信息
|
|
|
- const maps = this.ctx.app.config.studmaps;
|
|
|
- const _datas = params.map(p => {
|
|
|
- const data = {};
|
|
|
- Object.keys(maps).forEach(k => { data[k] = p[maps[k]]; });
|
|
|
- // Object.entries(maps).forEach(a => { data[a[0]] = p[a[1]]; });
|
|
|
- return data;
|
|
|
- });
|
|
|
- return _datas;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 将取得的数据校验格式是否正确
|
|
|
- async validatedata(elem, _datas) {
|
|
|
- let errCount = 0;
|
|
|
- const errmsgRes = [];
|
|
|
- for (const i in _datas) {
|
|
|
- const data = _datas[i];
|
|
|
- if (data.xh === '') {
|
|
|
- errCount++;
|
|
|
- const errmsg = { ...data, errmsg: '学号为空' };
|
|
|
- errmsgRes.push(errmsg);
|
|
|
- break;
|
|
|
- }
|
|
|
- if (data.xm === '') {
|
|
|
- errCount++;
|
|
|
- const errmsg = { ...data, errmsg: '姓名为空' };
|
|
|
- errmsgRes.push(errmsg);
|
|
|
- break;
|
|
|
- }
|
|
|
- if (data.sfzh === '') {
|
|
|
- errCount++;
|
|
|
- const errmsg = { ...data, errmsg: '身份证号为空' };
|
|
|
- errmsgRes.push(errmsg);
|
|
|
- break;
|
|
|
- }
|
|
|
- if (data.xb === '') {
|
|
|
- errCount++;
|
|
|
- const errmsg = { ...data, errmsg: '性别为空' };
|
|
|
- errmsgRes.push(errmsg);
|
|
|
- break;
|
|
|
- }
|
|
|
- if (data.yxdm === '') {
|
|
|
- errCount++;
|
|
|
- const errmsg = { ...data, errmsg: '院校代码为空' };
|
|
|
- errmsgRes.push(errmsg);
|
|
|
- break;
|
|
|
- }
|
|
|
- if (data.yxmc === '') {
|
|
|
- errCount++;
|
|
|
- const errmsg = { ...data, errmsg: '院校名称为空' };
|
|
|
- errmsgRes.push(errmsg);
|
|
|
- break;
|
|
|
- }
|
|
|
- if (data.zymc === '') {
|
|
|
- errCount++;
|
|
|
- const errmsg = { ...data, errmsg: '专业名称为空' };
|
|
|
- errmsgRes.push(errmsg);
|
|
|
- break;
|
|
|
- }
|
|
|
- if (data.xl === '') {
|
|
|
- errCount++;
|
|
|
- const errmsg = { ...data, errmsg: '学历为空' };
|
|
|
- errmsgRes.push(errmsg);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- if (errCount !== 0) {
|
|
|
- const updatedata = { status: '2', errmsg: errmsgRes };
|
|
|
- console.log(updatedata);
|
|
|
- await this.ctx.service.dataimp.update({ id: elem.id }, updatedata);
|
|
|
- }
|
|
|
- return errCount;
|
|
|
- }
|
|
|
-
|
|
|
- // 将取得的数据插入到数据表中
|
|
|
- async dataimport(elem, _datas) {
|
|
|
- // 将数据逐条导入学生库中
|
|
|
- const queryData = { year: elem.createtime, schid: elem.userid, schname: elem.name };
|
|
|
- let errCount = 0;
|
|
|
- const errmsgRes = [];
|
|
|
- for (const i in _datas) {
|
|
|
- try {
|
|
|
- await this.ctx.service.axiox.student.create(queryData, _datas[i]);
|
|
|
- } catch (err) {
|
|
|
- console.log(err);
|
|
|
- errCount++;
|
|
|
- errmsgRes.push(_datas[i]);
|
|
|
- }
|
|
|
- }
|
|
|
- console.log(errCount);
|
|
|
- // 导入成功时更新状态
|
|
|
- if (errCount === 0) {
|
|
|
- const updatedata = { status: '1' };
|
|
|
- await this.ctx.service.dataimp.update({ id: elem.id }, updatedata);
|
|
|
- } else {
|
|
|
- console.log(errmsgRes);
|
|
|
- const updatedata = { status: '2', errmsg: errmsgRes };
|
|
|
- console.log(updatedata);
|
|
|
- await this.ctx.service.dataimp.update({ id: elem.id }, updatedata);
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-module.exports = ExcelimportService;
|