using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using Telerik.Web.UI; namespace VRS.Management.VSAT { public partial class Examination : BaseListPage { DataService.BLL.pro_result bll = new DataService.BLL.pro_result(); DataService.BLL.pro_result_detail bll_result_detail = new DataService.BLL.pro_result_detail(); DataService.BLL.admin_user bll_user = new DataService.BLL.admin_user(); DataService.BLL.pro_file bll_file = new DataService.BLL.pro_file(); DataService.BLL.pro_theory_base bll_theory_base = new DataService.BLL.pro_theory_base(); DataService.BLL.pro_examination bll_examination = new DataService.BLL.pro_examination(); DataService.BLL.pro_exam_batch bll_exam_batch = new DataService.BLL.pro_exam_batch(); DataService.BLL.admin_log log = new DataService.BLL.admin_log(); DataService.BLL.pro_exam_theory bll_exam_theory = new DataService.BLL.pro_exam_theory(); protected override void Page_Load(object sender, EventArgs e) { base.Page_Load(sender, e); if (!IsPostBack) { start.SelectedDate = DateTime.Today.AddDays(-365); end.SelectedDate = DateTime.Today; DataLoad(); } } public List getDataSet() { var start_date = start.SelectedDate.HasValue ? start.SelectedDate.Value.ToString("yyyy-MM-dd") : ""; var end_date = end.SelectedDate.HasValue ? end.SelectedDate.Value.ToString("yyyy-MM-dd") : ""; if (!string.IsNullOrEmpty(end_date)) { end_date = DateTime.Parse(end_date).AddDays(1).ToString("yyyy-MM-dd"); } //var query = new StringBuilder(" 1 = 1 and subject_id!='00003' "); //排除故障现象考试 // 身份证号、姓名、部门、性别、科目、船型、时间联合筛选 (3列) var query = new StringBuilder(" 1 = 1 "); //不排除故障现象考试 var user = DataService.BLL.admin_user.load_login(); var userModel = bll_user.GetModel(user.user_id); if (bll_user.IsAdministrator(userModel)) { } else //老师只能看到自己的单位的 $$ { //query.AppendFormat(" AND unit_id = '{0}' ", userModel.unit_id); } //开始时间、结束时间 if (!string.IsNullOrWhiteSpace(start_date)) { query.AppendFormat(" AND examine_time >= '{0}' ", start_date); } if (!string.IsNullOrWhiteSpace(end_date)) { query.AppendFormat(" AND examine_time < '{0}' ", end_date); } //船型 if (!string.IsNullOrWhiteSpace(dp_sign_boat.SelectedValue)) { query.AppendFormat(" AND examine_kind = '{0}' ", dp_sign_boat.SelectedValue); } var data = bll.GetModelList(query.ToString()); for (int i = 0; i < data.Count; i++) { var model = data[i]; var boat = BasePage.list_sign_boat.FirstOrDefault(s => s.type_id == model.examine_kind); if (null != boat) { model.examine_kind_dsc = boat.type_name; } model.has_video = "0"; var file = bll_file.GetModelByOutid(model.result_id); if (null != file) { if (!file.file_url.Contains("http")) //本地 { string path = Context.Server.MapPath("~/" + file.file_url); if (File.Exists(path)) { model.has_video = "1"; var video_title = model.real_name + "-" + model.subject_name + "-" + model.total_result + "分"; model.video_title = video_title; model.video_url = "/" + file.file_url; } } else { model.has_video = "1"; var video_title = model.real_name + "-" + model.subject_name + "-" + model.total_result + "分"; model.video_title = video_title; model.video_url = file.file_url; } } } return data.OrderByDescending(s => s.examine_time).ToList(); ; } protected override void DataLoad() { StringBuilder query = new StringBuilder(" 1 = 1 "); var start_date = start.SelectedDate.HasValue ? start.SelectedDate.Value.ToString("yyyy-MM-dd") : ""; var end_date = end.SelectedDate.HasValue ? end.SelectedDate.Value.ToString("yyyy-MM-dd") : ""; if (!string.IsNullOrEmpty(end_date)) { end_date = DateTime.Parse(end_date).AddDays(1).ToString("yyyy-MM-dd"); } //开始时间、结束时间 if (!string.IsNullOrWhiteSpace(start_date)) { query.AppendFormat(" AND create_time >= '{0}' ", start_date); } if (!string.IsNullOrWhiteSpace(end_date)) { query.AppendFormat(" AND create_time < '{0}' ", end_date); } if (!string.IsNullOrEmpty(dp_exam_status.SelectedValue)) { query.AppendFormat(" AND exam_status = {0} ", dp_exam_status.SelectedValue); } if (!string.IsNullOrWhiteSpace(txt_exam_name.Text.Trim())) { query.AppendFormat(" AND exam_name LIKE '%{0}%' ", txt_exam_name.Text.Trim()); } if (!string.IsNullOrWhiteSpace(dp_exam_type.SelectedValue)) { query.AppendFormat(" AND exam_type = '{0}' ", dp_exam_type.SelectedValue); } var qry = query.ToString(); var list = bll_examination.GetModelList(qry).OrderByDescending(s => s.id).ToList(); foreach (var item in list) { //状态1未发布2已发布3删除 if (item.exam_status.HasValue) { if (item.exam_status.Value == 1) { item.exam_status_str = "未发布"; } else if (item.exam_status.Value == 2) { item.exam_status_str = "已发布"; } else if (item.exam_status.Value == 3) { item.exam_status_str = "删除"; } } } dataList.DataSource = list; dataList.Rebind(); } protected override void GridList_PageIndexChanged(object sender, GridPageChangedEventArgs e) { DataLoad(); } protected override void GridList_PageSizeChanged(object sender, GridPageSizeChangedEventArgs e) { DataLoad(); } protected override void GridList_SortCommand(object sender, GridSortCommandEventArgs e) { DataLoad(); } protected override void GrdList_DeleteCommand(object sender, GridCommandEventArgs e) { string Id = (e.Item as GridDataItem).OwnerTableView.DataKeyValues[e.Item.ItemIndex]["Id"].ToString(); bll.Delete(Id); DataLoad(); } protected override void AjaxManager_AjaxRequest(object sender, AjaxRequestEventArgs e) { } protected void btnSelect_Click(object sender, EventArgs e) { DataLoad(); } protected void btnDelete_Click(object sender, EventArgs e) { var model = bll_examination.GetModel(IdInput.Value); //一、试卷已发布、禁止删除、编辑 if (model.exam_status == 2) { RadAjaxManager1.Alert("已发布状态不能删除!"); return; } var exam_id = model.id; var list = bll_exam_batch.GetModelList("exam_id='" + exam_id + "'"); if (list.Count > 0) { var batch = list[0]; var dsc = ""; if (null != batch) { //二、考试场次已占用该试卷,禁止删除该试卷 dsc = "批次:" + batch.batch_name + ",包含此试卷!"; } RadAjaxManager1.Alert("试卷不能删除。" + dsc); return; } //if (bll_examination.Delete(IdInput.Value)) //删除试卷后,必删与题目的关联关系(exam_theory)$$$$ if (bll_examination.DeleteExamAndExamTheory(IdInput.Value) > 0) { DataLoad(); } } protected void btnBatchDel_Click(object sender, EventArgs e) { var count = dataList.SelectedItems.Count; if (count <= 0) { RadAjaxManager1.Alert("成绩不能为空!"); return; } List list_result = new List(); foreach (var obj in dataList.SelectedItems) { GridDataItem item = obj as GridDataItem; var result_id = item.GetDataKeyValue("result_id").ToString(); var model = bll.GetModel(result_id); if (null != model) { list_result.Add(model); } } var flag = false; //批量删除 if (list_result.Count > 0) { for (int i = 0; i < list_result.Count; i++) { var result = list_result[i]; if (bll.Delete(result.result_id)) { flag = true; bll_result_detail.DeleteByResultId(result.result_id); } } } if (flag) { DataLoad(); } } /// /// 导出excel /// /// /// protected void btnExport_Click(object sender, EventArgs e) { var data = getDataSet(); string filePath = Server.MapPath("~/Download/"); if (!Directory.Exists(filePath)) { Directory.CreateDirectory(filePath); } string fileName = string.Format("{0}.xls", "成绩列表_" + DateTime.Now.ToString("yyyyMMddHHmmss")); filePath = filePath + fileName; //部门 姓名 性别 账号 身份证号 科目名称 船型 成绩 考试时间 var table = new DataTable(); //table.Columns.Add("部门"); table.Columns.Add("省"); table.Columns.Add("市"); table.Columns.Add("单位"); table.Columns.Add("姓名"); //table.Columns.Add("性别"); //table.Columns.Add("账号"); table.Columns.Add("登录账号"); table.Columns.Add("科目名称"); table.Columns.Add("船型"); table.Columns.Add("成绩"); table.Columns.Add("考试时间"); foreach (var item in data) { var row = table.NewRow(); row["省"] = item.province; row["市"] = item.city; row["单位"] = item.unit_name; row["姓名"] = item.real_name; //row["性别"] = item.major; //row["账号"] = item.login_name; row["登录账号"] = item.examine_term; row["科目名称"] = item.subject_name; row["船型"] = item.examine_kind_dsc; row["成绩"] = item.total_result; row["考试时间"] = item.examine_time.Value.ToString("yyyy-MM-dd HH:mm:ss"); table.Rows.Add(row); } VRS.Util.Import.DateTableToExcel(table, filePath); FileInfo fileInfo = new FileInfo(filePath); Response.Clear(); Response.ClearContent(); Response.ClearHeaders(); Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName); Response.AddHeader("Content-Length", fileInfo.Length.ToString()); Response.AddHeader("Content-Transfer-Encoding", "binary"); Response.ContentType = "application/octet-stream"; Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312"); Response.WriteFile(fileInfo.FullName); Response.Flush(); Response.End(); } protected void dataList_ItemDataBound(object sender, GridItemEventArgs e) { //状态1未发布2已发布3删除 if (e.Item is GridDataItem) { GridDataItem item = e.Item as GridDataItem; Button btn_start = e.Item.FindControl("btn_start") as Button; Button btn_stop = e.Item.FindControl("btn_stop") as Button; int state = int.Parse(item.GetDataKeyValue("exam_status").ToString()); if (state == 1) //未发布 { btn_start.Visible = true; btn_stop.Visible = false; } else if (state == 2) //已发布 { btn_start.Visible = false; btn_stop.Visible = true; //e.Item.CssClass = "row_highlight"; } } } protected void dataList_ItemCommand(object sender, GridCommandEventArgs e) { if (e.CommandName == "start") { var id = (e.Item as GridDataItem).GetDataKeyValue("id").ToString(); var model = bll_examination.GetModel(id); model.exam_status = 2; //发布 var theory_list = bll_exam_theory.GetModelList("exam_id='" + model.id + "'"); if (theory_list.Count <= 0) { RadAjaxManager1.Alert("该试卷没有配置题目!"); return; } var theory_score = theory_list.Sum(s => s.per_score); var d_total_score = decimal.Parse(model.total_score); if (d_total_score != theory_score) { var score_not_same = string.Format("试卷分值:{0},与题目分值:{1},不一致!", d_total_score, theory_score); RadAjaxManager1.Alert(score_not_same); return; } if (bll_examination.Update(model)) { log.write_log("发布成功。" + "试卷名称:" + model.exam_name + ",id:" + model.id); //RadAjaxManager1.ResponseScripts.Add("alert('启用考试批次成功!');"); DataLoad(); } else RadAjaxManager1.Alert("启用考试批次失败!"); } else if (e.CommandName == "stop") { var id = (e.Item as GridDataItem).GetDataKeyValue("id").ToString(); var model = bll_examination.GetModel(id); //考试场次进行中 ,禁止撤销发布 var list = bll_exam_batch.GetModelList("exam_id='" + id + "' and now()>= start_time and now()< end_time "); if (list.Count > 0) { var batch = list[0]; var dsc = string.Format("alert('该试卷关联的考试批次:{0},正在进行中,不能撤销!')", batch.batch_name); RadAjaxManager1.ResponseScripts.Add(dsc); return; } model.exam_status = 1; //未发布 if (bll_examination.Update(model)) { log.write_log("撤销试卷发布成功。" + "试卷名称:" + model.exam_name + ",id:" + model.id); //RadAjaxManager1.ResponseScripts.Add("alert('停用考试批次成功!');"); DataLoad(); } else RadAjaxManager1.Alert("撤销试卷发布失败!"); } } } }