using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using System.Web; using System.Web.Mvc; using Bowin.Web.Controls.Mvc; using Bowin.Common.Utility; using Bowin.Common.Data; using EMIS.Utility; using EMIS.Web.Controls; using EMIS.ViewModel; using EMIS.ViewModel.EnrollManage.NewStudentManage; using EMIS.CommonLogic.EnrollManage.NewStudentManage; namespace EMIS.Web.Controllers.EnrollManage.NewStudentManage { [Authorization] public class NewStudentController : Controller { public INewStudentServices newStudentServices { get; set; } /// /// 新生名单页面 /// /// public ActionResult List() { return View(); } /// /// 新生名单页面列表查询 /// /// /// [HttpPost] public ActionResult List(QueryParamsModel pararms) { ConfiguretView configuretView = ConfiguretExtensions.GetConfiguretermsView(pararms); var gradeID = pararms.getExtraInt("DictionaryGrade") == DropdownList.SELECT_ALL ? null : pararms.getExtraInt("DictionaryGrade"); var standardID = pararms.getExtraInt("DictionaryStandard") == DropdownList.SELECT_ALL ? null : pararms.getExtraInt("DictionaryStandard"); var educationID = pararms.getExtraInt("DictionaryEducation") == DropdownList.SELECT_ALL ? null : pararms.getExtraInt("DictionaryEducation"); var learningformID = pararms.getExtraInt("DictionaryLearningform") == DropdownList.SELECT_ALL ? null : pararms.getExtraInt("DictionaryLearningform"); var learnSystem = pararms.getExtraString("DictionaryLearnSystem"); var isPhotoUrl = pararms.getExtraInt("IsPhotoUrlDropdown") == DropdownList.SELECT_ALL ? null : pararms.getExtraInt("IsPhotoUrlDropdown"); return base.Json(newStudentServices.GetNewStudentViewGrid(configuretView, gradeID, standardID, educationID, learningformID, learnSystem, isPhotoUrl, (int)pararms.page, (int)pararms.rows)); } /// /// 复制新增 /// /// /// public ActionResult CopyAdd(Guid newStudentID) { NewStudentView newStudentView = new NewStudentView(); newStudentView = newStudentServices.GetNewStudentView(newStudentID); return View("Edit", newStudentView); } /// /// 复制新增 /// /// /// [HttpPost] public ActionResult CopyAdd(NewStudentView newStudentView) { newStudentView.NewStudentID = Guid.Empty; return this.Edit(newStudentView); } /// /// 编辑、复制新增(新增、修改,业务主键:考生号唯一) /// /// /// /// [HttpGet] public ActionResult Edit(Guid? newNewStudentID, string type) { NewStudentView newStudentView = new NewStudentView(); if (newNewStudentID.HasValue && newNewStudentID != Guid.Empty) { newStudentView = newStudentServices.GetNewStudentView(newNewStudentID); if (type == "copyAdd") { newStudentView.NewStudentID = Guid.Empty; newStudentView.RecruitPictureUrl = null; } } else { newStudentView.NationID = (int)CF_Nation.Han; newStudentView.PoliticsID = (int)CF_Politics.YouthLeague; newStudentView.CertificatesType = (int)CF_CertificatesType.IdCrad; newStudentView.GradeID = BaseExtensions.GetCurrentYearID(); newStudentView.SemesterID = BaseExtensions.GetEntranceSemesterID(); newStudentView.AssignStatus = (int)CF_AssignStatus.NotAssigned; } return View(newStudentView); } /// /// 编辑、复制新增(新增、修改,业务主键:考生号唯一) /// /// /// [HttpPost] public ActionResult Edit(NewStudentView newStudentView) { try { var accepts = new List { ".jpg", ".jpeg", ".png", ".bmp" }; var postedFile = Request.Files["RecruitPictureUrl"]; if (!string.IsNullOrEmpty(postedFile.FileName) && !accepts.Contains(Path.GetExtension(postedFile.FileName).ToLower())) { throw new Exception("只允许上传.jpg、.jpeg、.png、.bmp格式的文件。"); } string photoUrl = FileUploadHelper.UploadFile(postedFile); newStudentServices.NewStudentEdit(newStudentView, photoUrl); return RedirectToAction("MsgShow", "Common", new { WindowID = Request["WindowID"], msg = "保存成功。", url = Url.Action("List").AddMenuParameter() }); } catch (Exception ex) { return RedirectToAction("MsgShowAndOpen", "Common", new { WindowID = Request["WindowID"], msg = "保存失败,原因:" + ex.Message }); } } /// /// 删除 /// /// /// [HttpPost] public ActionResult Delete(string newStudentIDs) { try { List list = newStudentIDs.Split(',').Where(x => !string.IsNullOrEmpty(x)).Select(x => (Guid?)new Guid(x)).ToList(); newStudentServices.NewStudentDelete(list); return Json(new ReturnMessage() { IsSuccess = true, Message = "删除成功。" }); } catch (Exception ex) { return Json(new ReturnMessage() { IsSuccess = false, Message = "删除失败,原因:" + ex.Message }); } } /// /// 删除照片(单个删除) /// /// /// [HttpPost] public ActionResult DeletePhoto(Guid? newStudentID) { try { this.newStudentServices.DeletePhoto(newStudentID); return Json(new ReturnMessage() { IsSuccess = true, Message = "删除照片成功。" }); } catch (Exception ex) { return Json(new ReturnMessage() { IsSuccess = false, Message = "删除照片失败:" + ex.Message }); } } /// /// 删除照片(批量删除) /// /// /// [HttpPost] public ActionResult PicDelete(string newStudentIDs) { try { List list = newStudentIDs.Split(',').Where(x => !string.IsNullOrEmpty(x)).Select(x => (Guid?)new Guid(x)).ToList(); newStudentServices.PicDelete(list); return Json(new ReturnMessage() { IsSuccess = true, Message = "删除照片成功。" }); } catch (Exception ex) { return Json(new ReturnMessage() { IsSuccess = false, Message = "删除照片失败:" + ex.Message }); } } /// /// 导入照片 /// /// /// /// [HttpGet] public ActionResult PicImport(string errorFile, string operationTips) { ViewBag.ErrorFile = errorFile; if (string.IsNullOrEmpty(operationTips)) { operationTips = "点击查看失败原因..."; } ViewBag.operationTips = operationTips; return View(); } /// /// 导入照片 /// /// /// /// [HttpPost] public ActionResult PicImport(HttpPostedFileBase file, string importPicType) { try { if (file.ContentLength <= 0) { throw new Exception("请选择你要上传的照片(注:格式为zip或rar的压缩包文件)。"); } var acceptFileExtensions = new[] { ".zip", ".rar" }; var fileExtensionName = Path.GetExtension(file.FileName); if (!acceptFileExtensions.Contains(fileExtensionName)) { throw new Exception("格式错误,只允许上传zip或rar格式的压缩包文件。"); } string fileSourceWebPath = null; string errorSourceWebPath = null; var photoPathList = FileUploadHelper.UploadFileAndExtractFile(file, out fileSourceWebPath, out errorSourceWebPath); System.IO.File.Delete(Server.MapPath(fileSourceWebPath)); if (photoPathList == null || photoPathList.Count <= 0) { throw new Exception("压缩包中文件为空。"); } var acceptPicExtensions = new[] { ".jpg", ".jpeg", ".png", ".bmp" }; List newPhotoPathList = new List(); foreach (var photoPath in photoPathList) { string photoExtensionName = Path.GetExtension(photoPath).ToLower(); if (acceptPicExtensions.Contains(photoExtensionName)) { newPhotoPathList.Add(photoPath); } else { throw new Exception("压缩包中含有不支持的照片格式。"); } } int? inCount = 0; int? errCount = 0; var errDataTable = new DataTable(); newStudentServices.NewStudentPicImport(newPhotoPathList, importPicType, out inCount, out errCount, out errDataTable); if (errDataTable != null && errDataTable.Rows.Count > 0) { NpoiExcelHelper npoiExcelHelper = new NpoiExcelHelper(); npoiExcelHelper.SaveInServer(errDataTable, Server.MapPath(errorSourceWebPath)); string errorWebPath = string.Format("{0}", errorSourceWebPath); ViewBag.ErrorFile = errorWebPath; string Errinfo = string.Format("提示:{0}个照片导入成功,{1}个照片导入失败,点击查看。", inCount, errCount); ViewBag.operationTips = Errinfo; return RedirectToAction("MsgShow", "Common", new { WindowID = "none", msg = Errinfo, url = Url.Action("PicImport").AddMenuParameter() + "&errorFile=" + errorWebPath + "&operationTips=" + Errinfo + "&WindowID=" + Request["WindowID"] }); } else { string successInfo = string.Format("提示:{0}个照片导入成功。", inCount); return RedirectToAction("MsgShow", "Common", new { WindowID = Request["WindowID"], msg = successInfo, url = Url.Action("List").AddMenuParameter() }); } } catch (Exception ex) { return RedirectToAction("MsgShow", "Common", new { WindowID = "none", msg = "导入照片失败,原因:" + ex.Message, url = Url.Action("PicImport").AddMenuParameter() + "&WindowID=" + Request["WindowID"] }); } } /// /// Excel导入 /// /// /// /// [HttpGet] public ActionResult Import(string errorFile, string operationTips) { ViewBag.ErrorFile = errorFile; if (string.IsNullOrEmpty(operationTips)) { operationTips = "点击查看失败原因..."; } ViewBag.operationTips = operationTips; return View(); } /// /// Excel导入 /// /// /// [HttpPost] public ActionResult Import(HttpPostedFileBase file) { try { if (!NpoiExcelHelper.GetIsCompatible(file.FileName)) { throw new Exception("格式错误,只允许导入xls或xlsx格式的Excel文件。"); } Dictionary cellheader = new Dictionary { { "ExamineeNum", "考生号" }, { "AdmissionTicketNo", "准考证号" }, { "Name", "姓名" }, { "SexStr", "性别" }, { "NationStr", "民族" }, { "PoliticsStr", "政治面貌" }, { "BirthDateStr", "出生日期" }, { "CertificatesTypeStr", "证件类型" }, { "IDNumber", "身份证号" }, { "GradeStr", "年级" }, { "SemesterStr", "学期" }, { "StandardCode", "专业代码" }, { "StandardName", "专业名称" }, { "EducationStr", RSL.Get("EducationID") }, { "LearningformStr", "学习形式" }, { "LearnSystemStr", "学制" }, { "EntranceDateStr", "入学日期" }, { "ScoreStr", "总分" }, { "Telephone", "联系电话" }, { "Address", "通讯地址" }, { "Dormitory", "宿舍地址" }, { "Remark", "备注" }, { "ErrorMessage", "未导入原因" } }; int? inCount = 0; int? upCount = 0; int? errCount = 0; List errList = new List(); string sourceWebPath = FileUploadHelper.UploadFile(file); var sourcePhysicalPath = Server.MapPath(sourceWebPath); newStudentServices.NewStudentImport(cellheader, out inCount, out upCount, out errList, out errCount, sourcePhysicalPath); System.IO.File.Delete(sourcePhysicalPath); if (errList.Count() > 0) { string errorWebPath = string.Format("{0}", NpoiExcelHelper.EntityListToExcel2003(cellheader, errList, "新生信息导入失败文件", sourcePhysicalPath)); ViewBag.ErrorFile = errorWebPath; string Errinfo = string.Format("提示:{0}条新生信息导入成功,{1}条新生信息更新成功,{2}条新生信息导入失败,点击查看。", inCount, upCount, errCount); ViewBag.operationTips = Errinfo; return RedirectToAction("MsgShow", "Common", new { WindowID = "none", msg = Errinfo, url = Url.Action("Import").AddMenuParameter() + "&errorFile=" + errorWebPath + "&operationTips=" + Errinfo + "&WindowID=" + Request["WindowID"] }); } else { string successInfo = string.Format("提示:{0}条新生信息导入成功,{1}条新生信息更新成功。", inCount, upCount); return RedirectToAction("MsgShow", "Common", new { WindowID = Request["WindowID"], msg = successInfo, url = Url.Action("List").AddMenuParameter() }); } } catch (Exception ex) { return RedirectToAction("MsgShow", "Common", new { WindowID = "none", msg = "导入失败,原因:" + ex.Message, url = Url.Action("Import").AddMenuParameter() + "&WindowID=" + Request["WindowID"] }); } } /// /// Excel导出 /// /// [HttpPost] public ActionResult Excel() { NpoiExcelHelper neh = new NpoiExcelHelper(); ConfiguretView configuretView = ConfiguretExtensions.GetConfiguretermsView(null); var gradeID = Request.Form["DictionaryGrade"].ParseStrTo() == DropdownList.SELECT_ALL ? null : Request.Form["DictionaryGrade"].ParseStrTo(); var standardID = Request.Form["DictionaryStandard"].ParseStrTo() == DropdownList.SELECT_ALL ? null : Request.Form["DictionaryStandard"].ParseStrTo(); var educationID = Request.Form["DictionaryEducation"].ParseStrTo() == DropdownList.SELECT_ALL ? null : Request.Form["DictionaryEducation"].ParseStrTo(); var learningformID = Request.Form["DictionaryLearningform"].ParseStrTo() == DropdownList.SELECT_ALL ? null : Request.Form["DictionaryLearningform"].ParseStrTo(); var learnSystem = Request.Form["DictionaryLearnSystem"].ToString(); var isPhotoUrl = Request.Form["IsPhotoUrlDropdown"].ParseStrTo() == DropdownList.SELECT_ALL ? null : Request.Form["IsPhotoUrlDropdown"].ParseStrTo(); var dt = newStudentServices.GetNewStudentViewList(configuretView, gradeID, standardID, educationID, learningformID, learnSystem, isPhotoUrl) .Select(x => new { x.ExamineeNum, x.AdmissionTicketNo, x.Name, x.SexName, x.NationName, x.PoliticsName, BirthDate = x.BirthDate.HasValue ? x.BirthDate.Value.ToString("yyyy-MM-dd") : "", x.CertificatesTypeName, x.IDNumber, x.GradeID, x.SemesterName, x.StandardCode, x.StandardID, x.StandardName, x.EducationName, x.LearningformName, LearnSystem = x.LearnSystem.HasValue ? x.LearnSystem.Value.ToString("#.#") : null, EntranceDate = x.EntranceDate.HasValue ? x.EntranceDate.Value.ToString("yyyy-MM-dd") : "", x.Score, x.Telephone, x.Address, x.Dormitory, x.RecruitPictureUrl, x.AssignStatusName, x.Remark }).ToTable(); string[] liststring = { "考生号", "准考证号","姓名", "性别", "民族", "政治面貌", "出生日期", "证件类型", "身份证号", "年级", "学期", "专业代码", "专业ID(Value)", "专业名称", RSL.Get("EducationID"), "学习形式", "学制", "入学日期", "总分", "联系电话", "通讯地址", "宿舍地址", "照片Url", "分配状态", "备注" }; neh.Export(dt, liststring, "新生名单信息" + DateTime.Now.ToString("yyyyMMdd")); return Json(new ReturnMessage() { IsSuccess = true, Message = "导出成功。" }); } } }