feat: 拆分学号/身份证字段 + 考勤教师展示 + 代码优化
- 入住导入模板:学号和身份证号拆为独立字段,前后端对齐 - 排课查询关联教师,考勤归档页展示教师姓名 - 抽查时段增加 IsIn 校验 - 抽取 withPessimisticWriteLock 去重悲观锁查询 - import 增加文件空 buffer 校验 - 测试 mock 补全,适配事务 manager - MySQL init.sql VALUES() 语法兼容修复
This commit is contained in:
@@ -12,6 +12,7 @@ import {
|
||||
Res,
|
||||
UseInterceptors,
|
||||
UploadedFile,
|
||||
BadRequestException,
|
||||
} from '@nestjs/common';
|
||||
import { InjectRepository } from '@nestjs/typeorm';
|
||||
import { Repository } from 'typeorm';
|
||||
@@ -206,7 +207,8 @@ export class OccupanciesController {
|
||||
{ header: '学生姓名', key: 'studentName', width: 12 },
|
||||
{ header: '性别', key: 'gender', width: 8 },
|
||||
{ header: '电话', key: 'phone', width: 18 },
|
||||
{ header: '学号/身份证', key: 'idNumber', width: 22 },
|
||||
{ header: '学号', key: 'studentNo', width: 15 },
|
||||
{ header: '身份证号', key: 'idNumber', width: 22 },
|
||||
{ header: '负责人/班主任', key: 'supervisor', width: 15 },
|
||||
{ header: '入住日期', key: 'checkInDate', width: 14 },
|
||||
{ header: '退宿日期', key: 'checkOutDate', width: 14 },
|
||||
@@ -227,6 +229,7 @@ export class OccupanciesController {
|
||||
studentName: r.student?.name || '',
|
||||
gender: r.student?.gender || '',
|
||||
phone: r.student?.phone || '',
|
||||
studentNo: r.student?.studentNo || '',
|
||||
idNumber: r.student?.idNumber || '',
|
||||
supervisor: r.student?.supervisor || '',
|
||||
checkInDate: r.checkInDate || '',
|
||||
@@ -270,13 +273,14 @@ export class OccupanciesController {
|
||||
@Query('depositAmount') depositAmount?: string,
|
||||
) {
|
||||
const { ipAddress, userAgent } = extractRequestInfo(req);
|
||||
if (!file?.buffer) throw new BadRequestException('请上传入住名单 Excel 文件');
|
||||
const workbook = new ExcelJS.Workbook();
|
||||
await workbook.xlsx.load(file.buffer as any);
|
||||
const ws = workbook.worksheets[0];
|
||||
const rows = parseOccupancyImportWorksheet(ws);
|
||||
const result = await this.service.batchImportCheckIn(rows, {
|
||||
autoDeposit: autoDeposit === 'true',
|
||||
depositAmount: depositAmount ? +depositAmount : undefined,
|
||||
depositAmount: depositAmount?.trim() ? Number(depositAmount) : undefined,
|
||||
});
|
||||
await this.logService.log({
|
||||
userId: req.user?.id,
|
||||
|
||||
Reference in New Issue
Block a user