fix student import and profile labels

This commit is contained in:
2026-07-15 10:52:43 +08:00
parent fcde6caaaa
commit 8bd445df5a
4 changed files with 297 additions and 124 deletions

View File

@@ -132,6 +132,7 @@ export class StudentsService {
async batchImport(
rows: {
name: string;
studentNo?: string;
phone?: string;
idNumber?: string;
gender?: string;
@@ -158,6 +159,7 @@ export class StudentsService {
await this.repo.save(
this.repo.create({
name: row.name.trim(),
studentNo: row.studentNo?.trim() || undefined,
phone: row.phone?.trim() || undefined,
idNumber: row.idNumber?.trim() || undefined,
gender: row.gender || undefined,
@@ -180,6 +182,7 @@ export class StudentsService {
async matchImport(
rows: {
name: string;
studentNo?: string;
phone?: string;
idNumber?: string;
gender?: string;
@@ -194,10 +197,6 @@ export class StudentsService {
let matched = 0;
let skipped = 0;
for (const row of rows) {
if (!row.name || !row.name.trim()) {
skipped++;
continue;
}
// Match by phone first, then idNumber
let student = row.phone?.trim()
? await this.repo.findOne({ where: { phone: row.phone.trim() } })
@@ -214,6 +213,7 @@ export class StudentsService {
Pick<
Student,
| 'name'
| 'studentNo'
| 'phone'
| 'idNumber'
| 'gender'
@@ -225,6 +225,7 @@ export class StudentsService {
>
> = {};
if (row.name?.trim()) updates.name = row.name.trim();
if (row.studentNo?.trim()) updates.studentNo = row.studentNo.trim();
if (row.phone?.trim()) updates.phone = row.phone.trim();
if (row.idNumber?.trim()) updates.idNumber = row.idNumber.trim();
if (row.gender) updates.gender = row.gender;
@@ -237,7 +238,7 @@ export class StudentsService {
matched++;
}
return {
message: `匹配更新 ${matched} 人,跳过 ${skipped} 条(无匹配)`,
message: `更新已有学生资料 ${matched} 人,跳过 ${skipped} 条(无匹配)`,
matched,
skipped,
};