完善 老师导入流程
This commit is contained in:
parent
6b310cb4d4
commit
c9f9c22e6d
|
|
@ -224,7 +224,7 @@ namespace Learn.Archives.API.Controllers
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (errorExcelInfo.Count != 0)
|
if (errorExcelInfo.Count != 0)
|
||||||
return File(errorExcelInfo.ExportExcel(), "application/ms-excel");
|
return File(errorExcelInfo.ExportExcel(), "application/ms-excel", $"错误考试信息{DateTime.Now.ToString("MMddHHmm")}.xlsx");
|
||||||
|
|
||||||
//写入数据库
|
//写入数据库
|
||||||
var baseDB = baseService.Context;
|
var baseDB = baseService.Context;
|
||||||
|
|
@ -270,7 +270,8 @@ namespace Learn.Archives.API.Controllers
|
||||||
英语 = 80.5m,
|
英语 = 80.5m,
|
||||||
赋分后总分=721.5m
|
赋分后总分=721.5m
|
||||||
} };
|
} };
|
||||||
return File(resultList.ExportExcel(), "application/ms-excel");
|
return File(resultList.ExportExcel(), "application/ms-excel",
|
||||||
|
$"导入成绩模板{DateTime.Now.ToString("MMddHHmm")}.xlsx");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
||||||
|
|
@ -114,7 +114,6 @@ namespace Learn.Archives.API.Controllers
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 导入考试信息
|
/// 导入考试信息
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="dto"></param>
|
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost, ResultIgnore]
|
[HttpPost, ResultIgnore]
|
||||||
[HttpLogEnable]
|
[HttpLogEnable]
|
||||||
|
|
@ -136,7 +135,6 @@ namespace Learn.Archives.API.Controllers
|
||||||
if (dataList == null || dataList.Count() == 0)
|
if (dataList == null || dataList.Count() == 0)
|
||||||
Oh.ModelError("导入失败:无有效数据");
|
Oh.ModelError("导入失败:无有效数据");
|
||||||
|
|
||||||
//todo
|
|
||||||
//处理数据
|
//处理数据
|
||||||
var errorExcelInfo = new List<SchoolBusinessImportError>();
|
var errorExcelInfo = new List<SchoolBusinessImportError>();
|
||||||
var insertInfo = new List<SchoolBusiness>();
|
var insertInfo = new List<SchoolBusiness>();
|
||||||
|
|
@ -253,7 +251,8 @@ namespace Learn.Archives.API.Controllers
|
||||||
|
|
||||||
};
|
};
|
||||||
if (errorExcelInfo.Count != 0)
|
if (errorExcelInfo.Count != 0)
|
||||||
return File(errorExcelInfo.ExportExcel(), "application/ms-excel");
|
return File(errorExcelInfo.ExportExcel(), "application/ms-excel"
|
||||||
|
, $"错误赴校信息{DateTime.Now.ToString("MMddHHmm")}.xlsx");
|
||||||
|
|
||||||
//写入数据库
|
//写入数据库
|
||||||
await baseService.InsertRangeAsync(insertInfo);
|
await baseService.InsertRangeAsync(insertInfo);
|
||||||
|
|
@ -261,7 +260,7 @@ namespace Learn.Archives.API.Controllers
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 下载导入成绩模板
|
/// 下载导入模板
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpGet, ResultIgnore, AllowAnonymous]
|
[HttpGet, ResultIgnore, AllowAnonymous]
|
||||||
|
|
@ -271,7 +270,23 @@ namespace Learn.Archives.API.Controllers
|
||||||
return File(resultList.ExportExcel(), "application/ms-excel", "导入赴校信息模板.xlsx");
|
return File(resultList.ExportExcel(), "application/ms-excel", "导入赴校信息模板.xlsx");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 下载导出模板
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet, ResultIgnore, AllowAnonymous]
|
||||||
|
public async Task<IActionResult> ExportTemplate()
|
||||||
|
{
|
||||||
|
var qData = await baseService.AsQueryable()
|
||||||
|
.Where(s => true)
|
||||||
|
.ToArrayAsync();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//todo完善数据转换
|
||||||
|
var resultList = new List<SchoolBusinessImport>() { new SchoolBusinessImport() { } };
|
||||||
|
return File(resultList.ExportExcel(), "application/ms-excel", "导入赴校信息模板.xlsx");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ using System.Security.Claims;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using UserCenter.Model;
|
using UserCenter.Model;
|
||||||
using UserCenter.Model.Common;
|
using UserCenter.Model.Common;
|
||||||
|
using UserCenter.Model.Enum;
|
||||||
|
|
||||||
namespace Learn.Archives.API.Controllers
|
namespace Learn.Archives.API.Controllers
|
||||||
{
|
{
|
||||||
|
|
@ -108,11 +109,66 @@ namespace Learn.Archives.API.Controllers
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 导入老师信息
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost, ResultIgnore]
|
||||||
|
[HttpLogEnable]
|
||||||
|
public async Task<IActionResult> ImportTeacher(IFormFile? file)
|
||||||
|
{
|
||||||
|
|
||||||
|
var fl = file != null ? file : _httpContextAccessor.HttpContext?.Request.Form.Files[0];
|
||||||
|
if (fl == null) Oh.ModelError("传入无效的数据");
|
||||||
|
if (!Path.GetExtension(fl.FileName).Equals(".xlsx", StringComparison.OrdinalIgnoreCase))
|
||||||
|
Oh.ModelError("请选择导入文件为.xlsx的后缀名!");
|
||||||
|
//分析excel
|
||||||
|
IEnumerable<TeacherInfoImportError> dataList;
|
||||||
|
using var stream = new MemoryStream();
|
||||||
|
{
|
||||||
|
await fl.CopyToAsync(stream);
|
||||||
|
dataList = stream.Query<TeacherInfoImportError>()
|
||||||
|
.Where(s => !string.IsNullOrEmpty(s.School));
|
||||||
|
}
|
||||||
|
if (dataList == null || dataList.Count() == 0)
|
||||||
|
Oh.ModelError("导入失败:无有效数据");
|
||||||
|
var insertInfo = new List<Student>();
|
||||||
|
var userCenterImp = new List<UserExcelExportData>();
|
||||||
|
foreach (var s in dataList)
|
||||||
|
{
|
||||||
|
userCenterImp.Add(new UserExcelExportData()
|
||||||
|
{
|
||||||
|
UserType = s.UserType,
|
||||||
|
Account = s.Phone.ToString(),
|
||||||
|
Subject = s.Subject,
|
||||||
|
ExamNo = s.ExamNo,
|
||||||
|
School = s.School,
|
||||||
|
Grade = s.Grade,
|
||||||
|
Class = s.Class,
|
||||||
|
ClassType = s.ClassType,
|
||||||
|
Phone = s.Phone,
|
||||||
|
RealName = s.RealName,
|
||||||
|
Stages = s.Grade.Contains("初") ? StudentStagesEnum.初中.ToString() : StudentStagesEnum.高中.ToString()
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
//调用 用户中心 导入接口
|
||||||
|
var importRes = await _userCenterService.CallAPI_ImportJsonData(_httpContextAccessor.HttpContext, userCenterImp);
|
||||||
|
|
||||||
|
//处理数据
|
||||||
|
var errorExcelInfo = importRes.ErrorExcelExport.Select(s => s.Adapt<StudentInfoImportError>());
|
||||||
|
//如果有错误数据则返回excel
|
||||||
|
if (errorExcelInfo.Count() != 0)
|
||||||
|
return File(errorExcelInfo.ExportExcel(), "application/ms-excel", $"导入错误的老师{DateTime.Now.ToString("MMddHHmm")}.xlsx");
|
||||||
|
|
||||||
|
return Ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 导入考试信息
|
/// 导入学生信息
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost, ResultIgnore]
|
[HttpPost, ResultIgnore]
|
||||||
|
|
@ -134,14 +190,13 @@ namespace Learn.Archives.API.Controllers
|
||||||
}
|
}
|
||||||
if (dataList == null || dataList.Count() == 0)
|
if (dataList == null || dataList.Count() == 0)
|
||||||
Oh.ModelError("导入失败:无有效数据");
|
Oh.ModelError("导入失败:无有效数据");
|
||||||
|
|
||||||
var insertInfo = new List<Student>();
|
var insertInfo = new List<Student>();
|
||||||
var userCenterImp = new List<UserExcelExportData>();
|
var userCenterImp = new List<UserExcelExportData>();
|
||||||
foreach (var s in dataList)
|
foreach (var s in dataList)
|
||||||
{
|
{
|
||||||
insertInfo.Add(new Student()
|
insertInfo.Add(new Student()
|
||||||
{
|
{
|
||||||
AmountRelief = s.AmountRelief,
|
AmountRelief = decimal.TryParse(s.AmountRelief,out decimal v)?v:0,
|
||||||
ExitTime = s.ExitTime,
|
ExitTime = s.ExitTime,
|
||||||
Remark = s.Remark,
|
Remark = s.Remark,
|
||||||
JoinTime = s.JoinTime,
|
JoinTime = s.JoinTime,
|
||||||
|
|
@ -159,23 +214,28 @@ namespace Learn.Archives.API.Controllers
|
||||||
ExamNo = s.Id.ToString(),
|
ExamNo = s.Id.ToString(),
|
||||||
Phone = s.Phone,
|
Phone = s.Phone,
|
||||||
RealName = s.RealName,
|
RealName = s.RealName,
|
||||||
Stages = s.Stages
|
Stages = s.Grade.Contains("初")? StudentStagesEnum.初中.ToString() : StudentStagesEnum.高中.ToString()
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
//调用 用户中心 导入接口
|
//调用 用户中心 导入接口
|
||||||
var importRes = await _userCenterService.CallAPI_ImportJsonData(_httpContextAccessor.HttpContext, userCenterImp);
|
var importRes = await _userCenterService.CallAPI_ImportJsonData(_httpContextAccessor.HttpContext, userCenterImp);
|
||||||
|
|
||||||
var hUAccount = importRes.InsertUsers.Select(s => s.Account).ToHashSet();
|
var hUAccount = importRes.InsertUsers.ToDictionary(s=>s.Account,s=>s.Id);
|
||||||
//基于结果判断添加成功`
|
//基于结果判断添加成功`
|
||||||
insertInfo = insertInfo.Where(s => hUAccount.Contains(s.Id.ToString())).ToList();
|
insertInfo = insertInfo
|
||||||
|
.Where(s => hUAccount.ContainsKey(s.UserCenterId.ToString())).Select(s =>
|
||||||
|
{
|
||||||
|
s.UserCenterId = hUAccount[s.UserCenterId.ToString()];
|
||||||
|
return s;
|
||||||
|
}).ToList();
|
||||||
//部分成功的数据写入数据库
|
//部分成功的数据写入数据库
|
||||||
await baseService.InsertRangeAsync(insertInfo);
|
await baseService.InsertRangeAsync(insertInfo);
|
||||||
//处理数据
|
//处理数据
|
||||||
var errorExcelInfo = importRes.ErrorExcelExport.Select(s => s.Adapt<StudentInfoImportError>());
|
var errorExcelInfo = importRes.ErrorExcelExport.Select(s => s.Adapt<StudentInfoImportError>());
|
||||||
//如果有错误数据则返回excel
|
//如果有错误数据则返回excel
|
||||||
if (errorExcelInfo.Count() != 0)
|
if (errorExcelInfo.Count() != 0)
|
||||||
return File(errorExcelInfo.ExportExcel(), "application/ms-excel");
|
return File(errorExcelInfo.ExportExcel(), "application/ms-excel", $"导入错误学生{DateTime.Now.ToString("MMddHHmm")}.xlsx");
|
||||||
|
|
||||||
return Ok();
|
return Ok();
|
||||||
}
|
}
|
||||||
|
|
@ -185,6 +245,54 @@ namespace Learn.Archives.API.Controllers
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 下载导入模板
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet, ResultIgnore, AllowAnonymous]
|
||||||
|
public IActionResult DwImportTemplate()
|
||||||
|
{
|
||||||
|
var resultList = new List<StudentInfoImport>() { new StudentInfoImport()
|
||||||
|
{
|
||||||
|
RealName = "导入规范[导入时请删除本列]",
|
||||||
|
School = "必填:与系统匹配",
|
||||||
|
Grade = "必填:可选值\r\n[初一初二初三,高一高二高山]",
|
||||||
|
Class = "必填:与系统匹配\r\n格式:10班[数字+班]",
|
||||||
|
ClassType = "必填:可选值\r\n[云校班 海豚智学班 蓝鲸智库班 中职班 其他 雅思班 点阵笔班级 移动校园班级 智学班 ...]",
|
||||||
|
Status = "选填 可选值\r\n[就读,退出]",
|
||||||
|
AmountRelief ="选填: 为0则视为 '未申请减免'",
|
||||||
|
Phone="选填",
|
||||||
|
Remark="选填",
|
||||||
|
} };
|
||||||
|
return File(resultList.ExportExcel(), "application/ms-excel",
|
||||||
|
$"导入学生模板{DateTime.Now.ToString("MMddHHmm")}.xlsx");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 下载导入老师模板
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet, ResultIgnore, AllowAnonymous]
|
||||||
|
public IActionResult DwImportTeacherTemplate()
|
||||||
|
{
|
||||||
|
var resultList = new List<TeacherInfoImport>() {
|
||||||
|
new TeacherInfoImport()
|
||||||
|
{
|
||||||
|
Phone="必填",
|
||||||
|
RealName = "导入规范[导入时请删除本列]",
|
||||||
|
UserType = "必填 可选值\r\n[年级主任,班主任,教师]",
|
||||||
|
School = "必填:与系统匹配",
|
||||||
|
Grade = "必填:可选值\r\n[初一初二初三,高一高二高山]",
|
||||||
|
Class = "必填:与系统匹配\r\n格式:10班[数字+班]\r\n任教类型是年级主任时不填",
|
||||||
|
ClassType = "必填:可选值\r\n[云校班 海豚智学班 蓝鲸智库班 中职班 其他 雅思班 点阵笔班级 移动校园班级 智学班 ...]\r\n任教类型是年级主任时不填",
|
||||||
|
Subject = "选填学科",
|
||||||
|
ExamNo ="选填: 填写老师任职信息[不在授课架构中的职务]",
|
||||||
|
}};
|
||||||
|
return File(resultList.ExportExcel(), "application/ms-excel",
|
||||||
|
$"导入老师模板_{DateTime.Now.ToString("MMddHHmm")}.xlsx");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,7 @@ namespace Learn.Archives.Core.Common
|
||||||
|
|
||||||
var httpClient = _httpClientFactory.CreateClient();
|
var httpClient = _httpClientFactory.CreateClient();
|
||||||
|
|
||||||
var targetUri = new Uri(AppCommon.Config.UserCenterService.API + API_ImportJsonData);
|
var targetUri = new Uri(AppCommon.Config.UserCenterService.API +"/"+ API_ImportJsonData);
|
||||||
var requestMessage = new HttpRequestMessage(new HttpMethod("POST"), targetUri);
|
var requestMessage = new HttpRequestMessage(new HttpMethod("POST"), targetUri);
|
||||||
|
|
||||||
if (context.Request.Headers.TryGetValue("Authorization", out var authValues))
|
if (context.Request.Headers.TryGetValue("Authorization", out var authValues))
|
||||||
|
|
@ -71,7 +71,7 @@ namespace Learn.Archives.Core.Common
|
||||||
requestMessage.Content = new StringContent(data.ToJson(), Encoding.UTF8, "application/json");
|
requestMessage.Content = new StringContent(data.ToJson(), Encoding.UTF8, "application/json");
|
||||||
|
|
||||||
var responseMessage = await httpClient.SendAsync(requestMessage, HttpCompletionOption.ResponseHeadersRead);
|
var responseMessage = await httpClient.SendAsync(requestMessage, HttpCompletionOption.ResponseHeadersRead);
|
||||||
var resStr = await requestMessage.Content?.ReadAsStringAsync();
|
var resStr = await responseMessage.Content?.ReadAsStringAsync();
|
||||||
var res = JsonSerializer.Deserialize<BaseReturn<UserImportRes>>(resStr);
|
var res = JsonSerializer.Deserialize<BaseReturn<UserImportRes>>(resStr);
|
||||||
if (res == null || res.Code != 200)
|
if (res == null || res.Code != 200)
|
||||||
Oh.Error(res.Message, res.Code);
|
Oh.Error(res.Message, res.Code);
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,67 @@ using UserCenter.Model;
|
||||||
|
|
||||||
namespace Learn.Archives.Core.Model.Dto
|
namespace Learn.Archives.Core.Model.Dto
|
||||||
{
|
{
|
||||||
|
public class TeacherInfoImportError : TeacherInfoImport
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 导入失败原因
|
||||||
|
/// </summary>
|
||||||
|
[ExcelColumn(Name = "导入失败原因", Width = 50)]
|
||||||
|
public string ErrorMsg { get; set; }
|
||||||
|
}
|
||||||
|
public class TeacherInfoImport
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 姓名
|
||||||
|
/// </summary>
|
||||||
|
[ExcelColumn(Name = "姓名", Width = 20)]
|
||||||
|
public string RealName { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 联系电话
|
||||||
|
/// </summary>
|
||||||
|
[ExcelColumn(Name = "联系电话", Width = 18)]
|
||||||
|
public string Phone { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 任教类型
|
||||||
|
/// </summary>
|
||||||
|
[ExcelColumn(Name = "任教类型", Width = 20)]
|
||||||
|
public string UserType { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 学校
|
||||||
|
/// </summary>
|
||||||
|
[ExcelColumn(Name = "学校", Width = 20)]
|
||||||
|
public string School { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 年级
|
||||||
|
/// </summary>
|
||||||
|
[ExcelColumn(Name = "年级", Width = 10)]
|
||||||
|
public string Grade { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 班级
|
||||||
|
/// </summary>
|
||||||
|
[ExcelColumn(Name = "班级", Width = 15)]
|
||||||
|
public string Class { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 班级类型
|
||||||
|
/// </summary>
|
||||||
|
[ExcelColumn(Name = "班级类型", Width = 20)]
|
||||||
|
public string ClassType { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 科目
|
||||||
|
/// </summary>
|
||||||
|
[ExcelColumn(Name = "科目", Width = 20)]
|
||||||
|
public string Subject { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 职务
|
||||||
|
/// </summary>
|
||||||
|
[ExcelColumn(Name = "职务", Width = 20)]
|
||||||
|
public string ExamNo { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public class UserImportInsertUser
|
public class UserImportInsertUser
|
||||||
{
|
{
|
||||||
|
|
@ -17,6 +78,7 @@ namespace Learn.Archives.Core.Model.Dto
|
||||||
// 摘要:
|
// 摘要:
|
||||||
// 账号
|
// 账号
|
||||||
public string Account { get; set; }
|
public string Account { get; set; }
|
||||||
|
public long Id { get; set; }
|
||||||
}
|
}
|
||||||
public class UserImportRes
|
public class UserImportRes
|
||||||
{
|
{
|
||||||
|
|
@ -60,30 +122,24 @@ namespace Learn.Archives.Core.Model.Dto
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 年级
|
/// 年级
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[ExcelColumn(Name="年级")]
|
[ExcelColumn(Name="年级", Width = 20)]
|
||||||
public string Grade { get; set; }
|
public string Grade { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 班级
|
/// 班级
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[ExcelColumn(Name="班级")]
|
[ExcelColumn(Name="班级", Width = 15)]
|
||||||
public string Class { get; set; }
|
public string Class { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 班级
|
/// 班级
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[ExcelColumn(Name="班级类型")]
|
[ExcelColumn(Name="班级类型", Width = 20)]
|
||||||
public string ClassType { get; set; }
|
public string ClassType { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 学段
|
|
||||||
/// </summary>
|
|
||||||
[ExcelColumn(Name="学段")]
|
|
||||||
public string? Stages { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 减免金额
|
/// 减免金额
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[ExcelColumn(Name = "减免金额")]
|
[ExcelColumn(Name = "减免金额")]
|
||||||
public decimal AmountRelief { get; set; }
|
public string AmountRelief { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 学生状态[就读/退出]
|
/// 学生状态[就读/退出]
|
||||||
|
|
@ -108,9 +164,12 @@ namespace Learn.Archives.Core.Model.Dto
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[ExcelColumn(Name = "备注",Width =50)]
|
[ExcelColumn(Name = "备注",Width =50)]
|
||||||
public string? Remark { get; set; }
|
public string? Remark { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// id
|
/// id
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
///
|
||||||
|
[ExcelColumn(Ignore = true)]
|
||||||
public long Id { get; set; } = Yitter.IdGenerator.YitIdHelper.NextId();
|
public long Id { get; set; } = Yitter.IdGenerator.YitIdHelper.NextId();
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue