diff --git a/labs/Teacher/TeacherExt/Controllers/HomeController.cs b/labs/Teacher/TeacherExt/Controllers/HomeController.cs index 5b4a208e..3fa5227e 100644 --- a/labs/Teacher/TeacherExt/Controllers/HomeController.cs +++ b/labs/Teacher/TeacherExt/Controllers/HomeController.cs @@ -20,21 +20,28 @@ using TeacherExt.Models; namespace TeacherExt.Controllers { [Authorize] - public class HomeController :Controller + public class HomeController : Controller { private readonly IHostEnvironment _env; private readonly ILogger _logger; private readonly IRepository _organRepo; private readonly IRepository _userRepo; private readonly IRepository _teacherRepo; + private readonly IRepository _checkLogRepo; - public HomeController(IHostEnvironment env, ILogger logger, IRepository organRepo, IRepository userRepo, IRepository teacherRepo) + public HomeController(IHostEnvironment env, + ILogger logger, + IRepository organRepo, + IRepository userRepo, + IRepository teacherRepo, + IRepository checkLogRepo) { this._env = env; _logger = logger; this._organRepo = organRepo; this._userRepo = userRepo; this._teacherRepo = teacherRepo; + this._checkLogRepo = checkLogRepo; } public IActionResult Index(QueryTeacherModel model) @@ -45,9 +52,10 @@ namespace TeacherExt.Controllers .Skip(model.PageSize * (model.PageIndex - 1)) .Take(model.PageSize) .ToList() - .Select(o => { - var m = o.Teacher != null?o.Teacher.To() : new EditTeacherModel(); - if(o.Teacher!=null) + .Select(o => + { + var m = o.Teacher != null ? o.Teacher.To() : new EditTeacherModel(); + if (o.Teacher != null) { this.EntityToModel(o.Teacher, m); } @@ -90,6 +98,16 @@ namespace TeacherExt.Controllers var entity = this._userRepo.Table().Include(o => o.Organ).Include(o => o.Teacher).FirstOrDefault(o => o.Id == model.UserId); if (ModelState.IsValid) { + if(entity.Teacher.CheckStatus!=model.CheckStatus) + { + this._checkLogRepo.Add( new CheckLog { + UpdateBy = User.Identity.Name, + UpdateAt = DateTime.Now, + UserName = entity.UserName, + FromStatus = entity.Teacher.CheckStatus, + ToStatus=model.CheckStatus + }); + } entity.Teacher.From(model); this._userRepo.SaveChanges(); return RedirectToAction("Index"); @@ -102,18 +120,18 @@ namespace TeacherExt.Controllers public IActionResult Add() { var model = new EditTeacherModel(); - this.ToEditModel(null,model); + this.ToEditModel(null, model); return View(model); } public IActionResult Edit(Guid userId) { var entity = this._userRepo.ReadOnlyTable() - .Include(o=>o.Organ) - .Include(o=>o.Teacher) + .Include(o => o.Organ) + .Include(o => o.Teacher) .FirstOrDefault(o => o.Id == userId); var model = entity.To(); - if(entity.Teacher!=null) + if (entity.Teacher != null) { model.From(entity.Teacher); } @@ -129,7 +147,7 @@ namespace TeacherExt.Controllers [HttpPost] public IActionResult Add(EditTeacherModel model) { - if(ModelState.IsValid) + if (ModelState.IsValid) { var entity = new Teacher(); entity.From(model); @@ -161,6 +179,26 @@ namespace TeacherExt.Controllers return View(model); } + public IActionResult History(QueryHistoryModel model) + { + var query = this._checkLogRepo.ReadOnlyTable() + .Where(o => o.UserName == model.UserName) + .OrderByDescending(o => o.UpdateAt); + model.TotalCount = query.Count(); + var list = query.Skip(model.PageSize * (model.PageIndex - 1)) + .OrderByDescending(o=>o.UpdateAt) + .Take(model.PageSize) + .ToList() + .Select(o => + { + var m = o.To(); + return m; + }) + .ToList(); + model.List.AddRange(list); + return View(model); + } + private void ValidEditModel(EditTeacherModel model) { if (!ModelState.IsValid) @@ -265,7 +303,7 @@ namespace TeacherExt.Controllers using var fs = System.IO.File.OpenRead(template); var wk = new XSSFWorkbook(fs); var sheet = wk.GetSheetAt(0); - this.ExportInternal(sheet,model); + this.ExportInternal(sheet, model); using var ms = new MemoryStream(); wk.Write(ms); return File(ms.ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", $"教师列表_{DateTime.Now.ToString("yyyy_MM-dd_HH_mm_ss")}.xlsx"); @@ -284,7 +322,7 @@ namespace TeacherExt.Controllers { model.Organs = this._organRepo.ReadOnlyTable().ToList().Where(o => o.Id == organId).ToList(); } - var query = this._userRepo.ReadOnlyTable().Include(o=>o.Organ).Include(o=>o.Teacher).AsQueryable(); + var query = this._userRepo.ReadOnlyTable().Include(o => o.Organ).Include(o => o.Teacher).AsQueryable(); if (User.IsInRole("局管理员")) { //全部数据 @@ -304,7 +342,7 @@ namespace TeacherExt.Controllers return query; } - private void ExportInternal(ISheet sheet,QueryTeacherModel model) + private void ExportInternal(ISheet sheet, QueryTeacherModel model) { var style = sheet.Workbook.CreateCellStyle(); style.BorderTop = BorderStyle.Thin; @@ -313,8 +351,9 @@ namespace TeacherExt.Controllers style.BorderLeft = BorderStyle.Thin; var list = this.Query(model) .ToList() - .Select(o => { - var m = o.Teacher != null ? o.Teacher.To() : new EditTeacherModel(); + .Select(o => + { + var m = o.Teacher != null ? o.Teacher.To() : new EditTeacherModel { Id=Guid.Empty}; if (o.Teacher != null) { this.EntityToModel(o.Teacher, m); @@ -332,42 +371,54 @@ namespace TeacherExt.Controllers var teacher = list[i]; var rowNumber = i + 1; rowIndex = i + 4; + colIndex = -1; var row = sheet.CreateRow(rowIndex); row.Order(00).CreateCell(++colIndex).SetStyle(style).SetType(CellType.Numeric).SetCellValue(rowNumber); row.Order(01).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.Organ); row.Order(02).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.UserType); row.Order(03).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.RealName); row.Order(04).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.Sex); - row.Order(05).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.Birthday.Value.ToString("yyyy-MM")); - row.Order(06).CreateCell(++colIndex).SetStyle(style).SetType(CellType.Numeric).SetCellValue(teacher.Age.Value); + row.Order(05).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.Birthday.HasValue? teacher.Birthday.Value.ToString("yyyy-MM"):""); + row.Order(06).CreateCell(++colIndex).SetStyle(style).SetType(CellType.Numeric).SetCellValue(teacher.Age.HasValue? teacher.Age.Value:0); row.Order(07).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.Nation); row.Order(08).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.NativePlace); row.Order(09).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.PhoneNumber); row.Order(10).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.IdNumber); - row.Order(11).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.JobStart.Value.ToString("yyyy-MM")); - row.Order(12).CreateCell(++colIndex).SetStyle(style).SetType(CellType.Numeric).SetCellValue(teacher.JobAge.Value); + row.Order(11).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.JobStart.HasValue? teacher.JobStart.Value.ToString("yyyy-MM"):""); + row.Order(12).CreateCell(++colIndex).SetStyle(style).SetType(CellType.Numeric).SetCellValue(teacher.JobAge.HasValue?teacher.JobAge.Value:0); row.Order(13).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.TeachDate.HasValue ? teacher.TeachDate.Value.ToString("yyyy-MM") : ""); row.Order(14).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.CurrentJobStart.HasValue ? teacher.CurrentJobStart.Value.ToString("yyyy-MM") : ""); row.Order(15).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.Politics); row.Order(16).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.JoinPartyDate.HasValue ? teacher.JoinPartyDate.Value.ToString("yyyy-MM") : ""); row.Order(17).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.MaxTitle); - row.Order(18).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.MaxTitleStart.Value.ToString("yyyy-MM")); - if (teacher.IsJobAsMaxTitle.Value) + row.Order(18).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.MaxTitleStart.HasValue? teacher.MaxTitleStart.Value.ToString("yyyy-MM"):""); + if(teacher.IsJobAsMaxTitle.HasValue) + { + if (teacher.IsJobAsMaxTitle.Value) + { + row.Order(19).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.JobAsMaxTitleDate.HasValue ? teacher.JobAsMaxTitleDate.Value.ToString("yyyy-MM") : ""); + row.Order(20).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String); + row.Order(21).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String); + row.Order(22).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String); + row.Order(23).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String); + } + else + { + row.Order(19).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String); + row.Order(20).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.JobAsNotMaxTitleReason); + row.Order(21).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.NotMaxTitle); + row.Order(22).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.NotMaxTitleStart.HasValue ? teacher.NotMaxTitleStart.Value.ToString("yyyy-MM") : ""); + row.Order(23).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.JobAsNotMaxTitleDate.HasValue ? teacher.JobAsNotMaxTitleDate.Value.ToString("yyyy-MM") : ""); + } + } + else { - row.Order(19).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.JobAsMaxTitleDate.Value.ToString("yyyy-MM")); + row.Order(19).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String); row.Order(20).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String); row.Order(21).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String); row.Order(22).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String); row.Order(23).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String); } - else - { - row.Order(19).CreateCell(++colIndex).SetStyle(style); - row.Order(20).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.JobAsNotMaxTitleReason); - row.Order(21).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.NotMaxTitle); - row.Order(22).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.NotMaxTitleStart.Value.ToString("yyyy-MM")); - row.Order(23).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.JobAsNotMaxTitleDate.Value.ToString("yyyy-MM")); - } row.Order(24).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.PostType); row.Order(25).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.PostGrade); row.Order(26).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.CurrentPostGradeStart.HasValue ? teacher.CurrentPostGradeStart.Value.ToString("yyyy-MM") : ""); @@ -391,23 +442,34 @@ namespace TeacherExt.Controllers row.Order(44).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.MainTeachGrade); row.Order(45).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.OtherTeachPeriod); row.Order(46).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.OtherTeachSubject); - if (teacher.HasPosition.Value) + if(teacher.HasPosition.HasValue) { - if (teacher.IsMiddleLevel.Value) + if (teacher.HasPosition.Value) { - row.Order(47).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.Position); - row.Order(48).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.PositionStart.HasValue ? teacher.PositionStart.Value.ToString("yyyy-MM") : ""); - row.Order(49).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.FrontTeacher); - row.Order(50).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String); - row.Order(51).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String); + if (teacher.IsMiddleLevel.Value) + { + row.Order(47).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.Position); + row.Order(48).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.PositionStart.HasValue ? teacher.PositionStart.Value.ToString("yyyy-MM") : ""); + row.Order(49).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.FrontTeacher); + row.Order(50).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String); + row.Order(51).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String); + } + else + { + row.Order(47).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String); + row.Order(48).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String); + row.Order(49).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String); + row.Order(50).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String); + row.Order(51).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String); + } } else { row.Order(47).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String); row.Order(48).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String); row.Order(49).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String); - row.Order(50).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String); - row.Order(51).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String); + row.Order(50).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.NotOnPostReason); + row.Order(51).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.NotOnPostReasonDate.HasValue ? teacher.NotOnPostReasonDate.Value.ToString("yyyy-MM") : ""); } } else @@ -415,8 +477,8 @@ namespace TeacherExt.Controllers row.Order(47).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String); row.Order(48).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String); row.Order(49).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String); - row.Order(50).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.NotOnPostReason); - row.Order(51).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.NotOnPostReasonDate.HasValue ? teacher.NotOnPostReasonDate.Value.ToString("yyyy-MM") : ""); + row.Order(50).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String); + row.Order(51).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String); } row.Order(52).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.TeacherCardType); row.Order(53).CreateCell(++colIndex).SetStyle(style).SetType(CellType.String).SetCellValue(teacher.TeacherCardSubject); @@ -428,28 +490,34 @@ namespace TeacherExt.Controllers var colWidthList = new Dictionary(); for (int i = 0; i < rowIndex; i++) { - var row = sheet.GetRow(i); - for (int j = 0; j < colIndex; j++) - { - var cell = sheet.GetRow(i).GetCell(j); - if (!colWidthList.ContainsKey(j)) - { - colWidthList.Add(j, 0); - } - var value = cell.ToString(); - var array = value.Split('\n'); - var length = array.Select(o => Encoding.UTF8.GetBytes(o).Count()).Max() + 2; - Console.WriteLine($">>{i}x{j}:{length}:{(cell.IsMergedCell ? "merge" : "")}:{cell}"); - if (length > colWidthList[j]) - { - if (!cell.IsMergedCell) - { - colWidthList[j] = length; - Console.WriteLine($">>>>>{j}:{length}:{value}"); - } - } - - } + sheet.AutoSizeColumn(i); + //var row = sheet.GetRow(i); + //if(row!=null) + //{ + // for (int j = 0; j < colIndex; j++) + // { + // var cell = sheet.GetRow(i).GetCell(j); + // if(cell!=null) + // { + // if (!colWidthList.ContainsKey(j)) + // { + // colWidthList.Add(j, 0); + // } + // var value = cell.ToString(); + // var array = value.Split('\n'); + // var length = array.Select(o => Encoding.UTF8.GetBytes(o).Count()).Max() + 2; + // Console.WriteLine($">>{i}x{j}:{length}:{(cell.IsMergedCell ? "merge" : "")}:{cell}"); + // if (length > colWidthList[j]) + // { + // if (!cell.IsMergedCell) + // { + // colWidthList[j] = length; + // Console.WriteLine($">>>>>{j}:{length}:{value}"); + // } + // } + // } + // } + //} } foreach (var item in colWidthList.Keys) { @@ -465,7 +533,7 @@ namespace TeacherExt.Controllers public void EntityToModel(Teacher entity, EditTeacherModel model) { - if(entity!=null) + if (entity != null) { if (!string.IsNullOrEmpty(entity.IdNumber)) { diff --git a/labs/Teacher/TeacherExt/Entities/CheckLog.cs b/labs/Teacher/TeacherExt/Entities/CheckLog.cs index d1745ae3..e7266bc0 100644 --- a/labs/Teacher/TeacherExt/Entities/CheckLog.cs +++ b/labs/Teacher/TeacherExt/Entities/CheckLog.cs @@ -11,7 +11,7 @@ namespace TeacherExt.Entities } public string UpdateBy { get; set; } public DateTime? UpdateAt { get; set; } - public string TeacherId { get; set; } + public string UserName { get; set; } public string FromStatus { get; set; } public string ToStatus { get; set; } } diff --git a/labs/Teacher/TeacherExt/Models/QueryHistoryModel.cs b/labs/Teacher/TeacherExt/Models/QueryHistoryModel.cs new file mode 100644 index 00000000..5ae32096 --- /dev/null +++ b/labs/Teacher/TeacherExt/Models/QueryHistoryModel.cs @@ -0,0 +1,15 @@ +using Infrastructure.Application; +using System; + +namespace TeacherExt.Models +{ + public class QueryHistoryModel : PagedList + { + public Guid Id { get; set; } + public string UpdateBy { get; set; } + public DateTime? UpdateAt { get; set; } + public string UserName { get; set; } + public string FromStatus { get; set; } + public string ToStatus { get; set; } + } +} diff --git a/labs/Teacher/TeacherExt/Models/QueryTeacherModel.cs b/labs/Teacher/TeacherExt/Models/QueryTeacherModel.cs index 79776bf4..2f3c737e 100644 --- a/labs/Teacher/TeacherExt/Models/QueryTeacherModel.cs +++ b/labs/Teacher/TeacherExt/Models/QueryTeacherModel.cs @@ -6,7 +6,7 @@ using TeacherExt.Entities; namespace TeacherExt.Models { - public class QueryTeacherModel: PagedListModel + public class QueryTeacherModel: PagedList { [Display(Name="姓名")] public string RealName { get; set; } diff --git a/labs/Teacher/TeacherExt/Views/Home/Details.cshtml b/labs/Teacher/TeacherExt/Views/Home/Details.cshtml index 6a57aed8..87a39a2b 100644 --- a/labs/Teacher/TeacherExt/Views/Home/Details.cshtml +++ b/labs/Teacher/TeacherExt/Views/Home/Details.cshtml @@ -90,7 +90,7 @@ }); $('#admin1').click(function () { - $('#CheckStatus').val('校级审核成功'); + $('#CheckStatus').val('待局级审核'); $(this).parents('form').submit(); }); $('#admin2').click(function () { diff --git a/labs/Teacher/TeacherExt/Views/Home/History.cshtml b/labs/Teacher/TeacherExt/Views/Home/History.cshtml new file mode 100644 index 00000000..18119e87 --- /dev/null +++ b/labs/Teacher/TeacherExt/Views/Home/History.cshtml @@ -0,0 +1,48 @@ +@model QueryHistoryModel +@{ + var index = 0; +} +
+
+
+
+
+
+
+ +
+
+
+
+ + + + + + + + + + @foreach (var item in Model.List) + { + index++; + + + + + + + + + } +
行号审核时间审核人审核教师审核前状态审核后状态
@index@item.UpdateAt@item.UpdateBy@item.UserName@item.FromStatus@item.ToStatus
+
+ +
+
+
+
\ No newline at end of file diff --git a/labs/Teacher/TeacherExt/Views/Home/Index.cshtml b/labs/Teacher/TeacherExt/Views/Home/Index.cshtml index 8ed6d79e..5613ac45 100644 --- a/labs/Teacher/TeacherExt/Views/Home/Index.cshtml +++ b/labs/Teacher/TeacherExt/Views/Home/Index.cshtml @@ -74,6 +74,7 @@ 籍贯 审核 编辑 + 审计 @foreach (var item in Model.List) { @@ -90,7 +91,7 @@ @item.Nation @item.NativePlace - @if ((User.IsInRole("局管理员") && item.CheckStatus == "待局级审核") || (User.IsInRole("校管理员") && item.CheckStatus == "待校级审核")) + @if (User.IsInRole("局管理员") || User.IsInRole("校管理员")) { 审核 } @@ -101,6 +102,9 @@ 我的 } + + 日志 + } diff --git a/labs/Teacher/【20201203】靳发全-人事档案表格格式2.xlsx b/labs/Teacher/【20201203】靳发全-人事档案表格格式2.xlsx index ec6b64bf..b6d33307 100644 Binary files a/labs/Teacher/【20201203】靳发全-人事档案表格格式2.xlsx and b/labs/Teacher/【20201203】靳发全-人事档案表格格式2.xlsx differ