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 = "导出成功。"
});
}
}
}