using ICSharpCode.SharpZipLib.Zip; using NPOI.SS.Formula.Functions; using System; using System.Collections.Generic; using System.Configuration; 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; using Telerik.Web.UI.Widgets; using VRS.Handler; namespace VRS.Management.Exam { public partial class ResultQueryMatch : 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.exam_result_match bll_exam_result_match = new DataService.BLL.exam_result_match(); DataService.BLL.exam_result_match_detail bll_exam_result_match_detail = new DataService.BLL.exam_result_match_detail(); DataService.BLL.exam_config_cache bll_cache = new DataService.BLL.exam_config_cache(); DataService.BLL.set_data_acquisition bll_data_acquisition = new DataService.BLL.set_data_acquisition(); protected override void Page_Load(object sender, EventArgs e) { base.Page_Load(sender, e); if (!IsPostBack) { var systemName = ConfigurationManager.AppSettings["SystemName"]; hid_sys.Value = systemName; if (systemName == "00") { btn_answer.Visible = false; } start.SelectedDate = DateTime.Today.AddDays(-365); end.SelectedDate = DateTime.Today; //BindResultSubject(dp_subject_name, ""); BindExamSubject(dp_subject_name, ""); //BindKsMode(dp_mode, ""); var user = DataService.BLL.admin_user.load_login(); var userModel = bll_user.GetModel(user.user_id); if (bll_user.IsAdministrator(userModel)) { BindSchool(dp_school, ""); } else//老师、学校管理员 { BindSchool(dp_school, ""); dp_school.SelectedValue = userModel.school_id; dp_school.Enabled = false; var school_id = userModel.school_id; BindSchoolGrade(school_id, cbx_schoolgrade, ""); } DataLoad(); } } protected void ddp_province_SelectedIndexChanged(object sender, Telerik.Web.UI.DropDownListEventArgs e) { BindCity(ddp_city, ddp_province.SelectedValue, ""); ddp_unit.SelectedIndex = 0; ddp_unit.Items.Clear(); DataLoad(); } protected void ddp_city_SelectedIndexChanged(object sender, Telerik.Web.UI.DropDownListEventArgs e) { BindUnit(ddp_unit, ddp_city.SelectedValue, ""); DataLoad(); } public DataTable 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"); } // 身份证号、姓名、部门、性别、科目、船型、时间联合筛选 (3列) var query = new StringBuilder(" 1 = 1 and T2.is_lock = 0 "); //不排除故障现象考试 var user = DataService.BLL.admin_user.load_login(); var userModel = bll_user.GetModel(user.user_id); if (bll_user.IsAdministrator(userModel)) { if (!string.IsNullOrWhiteSpace(dp_school.SelectedValue)) { query.AppendFormat(" AND T2.school_id = '{0}' ", dp_school.SelectedValue); } } else //老师、学校管理员只能看到自己的学校的 $$ { query.AppendFormat(" AND T2.school_id = '{0}' ", userModel.school_id); } if (!string.IsNullOrWhiteSpace(cbx_schoolgrade.SelectedValue)) { query.AppendFormat(" AND T2.grade = '{0}' ", cbx_schoolgrade.SelectedValue); } //开始时间、结束时间 if (!string.IsNullOrWhiteSpace(start_date)) { query.AppendFormat(" AND T1.create_time >= '{0}' ", start_date); } if (!string.IsNullOrWhiteSpace(end_date)) { query.AppendFormat(" AND T1.create_time < '{0}' ", end_date); } //姓名、登录账号 if (!string.IsNullOrWhiteSpace(user_name.Text.Trim())) { query.AppendFormat(" AND (T2.login_name LIKE '%{0}%' or T2.real_name LIKE '%{0}%' )", user_name.Text.Trim()); } //科目 if (!string.IsNullOrWhiteSpace(dp_subject_name.SelectedValue)) { query.AppendFormat(" AND T1.subject = '{0}' ", dp_subject_name.SelectedValue); } /* //模式 if (!string.IsNullOrWhiteSpace(dp_mode.SelectedValue)) { query.AppendFormat(" AND T1.sjms = '{0}' ", dp_mode.SelectedValue); } */ var where = query.ToString(); var order = " order by T1.create_time desc"; var dataSet = bll_exam_result_match.QueryResult(where, order).Tables[0]; return dataSet; #region 旧的查询条件 /* if (!string.IsNullOrWhiteSpace(dpsjms.SelectedValue)) { query.AppendFormat(" AND sjms = '{0}' ", dpsjms.SelectedValue); } */ #endregion /* var data = bll.GetModelList(query.ToString()); for (int i = 0; i < data.Count; i++) { var model = data[i]; var result_user = bll_user.GetModel(model.user_id); if (null != result_user) { //model.province = result_user.province; //model.city = result_user.city; //model.unit_name = result_user.unit_name; } } */ // return data.OrderByDescending(s => s.examine_time).ToList(); ; } protected override void DataLoad() { /* 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") : ""; var examine_type = 1; var data = bll.GetListDetailByName(user_name.Text, subject_name.Text, start_date, end_date, examine_type); */ var data = getDataSet(); dataList.DataSource = data; 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_exam_result_match.GetModel(IdInput.Value); if (bll_exam_result_match.Delete(IdInput.Value)) { if (model.subject == "智能制造工厂") { var cache_list = bll_cache.GetModelList("user_id='" + model.user_id + "'"); foreach (var item in cache_list) { bll_cache.Delete(item.id); } var data_list = bll_data_acquisition.GetModelList("user_id='" + model.user_id + "'"); foreach (var item in data_list) { bll_data_acquisition.Delete(item.id); } } bll_exam_result_match_detail.DeleteByResultId(model.id); } DataLoad(); } public void getvalue() { } 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("id").ToString(); var model = bll_exam_result_match.GetModel(result_id); if (null != model) { list_result.Add(model.id); } } var flag = false; //批量删除 if (list_result.Count > 0) { for (int i = 0; i < list_result.Count; i++) { var id = list_result[i]; if (bll_exam_result_match.Delete(id)) { flag = true; var model = bll_exam_result_match.GetModel(id); if (null != model && model.subject == "智能制造工厂") { var cache_list = bll_cache.GetModelList("user_id='" + model.user_id + "'"); foreach (var item in cache_list) { bll_cache.Delete(item.id); } var data_list = bll_data_acquisition.GetModelList("user_id='" + model.user_id + "'"); foreach (var item in data_list) { bll_data_acquisition.Delete(item.id); } } bll_exam_result_match_detail.DeleteByResultId(id); } } } if (flag) { DataLoad(); } } protected void dp_school_SelectedIndexChanged(object sender, Telerik.Web.UI.DropDownListEventArgs e) { var value = dp_school.SelectedValue; BindSchoolGrade(value, cbx_schoolgrade, ""); } /// /// 导出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("考试时间"); //SELECT T1.id,T1.user_id,T1.subject,T1.sjms ,T1.total,T1.score,T1.create_time ,T2.login_name,T2.real_name,T2.school_id,T2.grade,T3.school FROM //var dic = DicKsMode(); for (int i = 0; i < data.Rows.Count; i++) { var row = table.NewRow(); var r = data.Rows[i]; row["学校"] = r["school"].ToString(); row["班级"] = r["grade"].ToString(); row["姓名"] = r["real_name"].ToString(); row["账号"] = r["login_name"].ToString(); //row["科目名称"] = r["subject"].ToString(); //DicKsMode().ContainsKey(Eval("sjms").ToString()) ? DicKsMode()[Eval("sjms").ToString()] : "" //var sjms = r["sjms"].ToString(); //row["实践模式"] = dic.ContainsKey(sjms) ? dic[sjms] : ""; row["三维得分"] = r["score"].ToString(); row["图片、配置得分"] = r["pic_score"].ToString(); row["总得分"] = r["sum_score"].ToString(); row["考试时间"] = Convert.ToDateTime(r["create_time"]).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 btnExport_Import_Click(object sender, EventArgs e) { //根据所选文件打包下载 MemoryStream ms = new MemoryStream(); byte[] buffer = null; using (ZipFile file = ZipFile.Create(ms)) { var data = getDataSet(); file.BeginUpdate(); //file.NameTransform = new MyNameTransfom();//通过这个名称格式化器,可以将里面的文件名进行一些处理。默认情况下,会自动根据文件的路径在zip中创建有关的文件夹。 for (int i = 0; i < data.Rows.Count; i++) { var r = data.Rows[i]; var path = r["pic_url"].ToString(); if (!string.IsNullOrEmpty(path)) { var filePath = Server.MapPath(r["pic_url"].ToString()); if (File.Exists(filePath)) { FileInfo fi1 = new FileInfo(filePath); var filePath2 = Server.MapPath("~/Copy/" + data.Rows[i]["login_name"].ToString() + "_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".png"); FileInfo fi2 = new FileInfo(filePath2); //Ensure that the target file does not exist. if (File.Exists(filePath2)) { fi2.Delete(); } fi1.CopyTo(filePath2); file.Add(filePath2); } } } //var filePath = Server.MapPath("/Upload/file_202309181654404833044606181182035.png"); //file.Add(Server.MapPath("/Upload/file_202309181654404833044606181182035.png")); //var filePath2 = Server.MapPath("/Copy/" + data.Rows[0]["login_name"].ToString() + "_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".png"); //FileInfo fi1 = new FileInfo(filePath); //FileInfo fi2 = new FileInfo(filePath2); //Ensure that the target file does not exist. //if (File.Exists(filePath2)) //{ // fi2.Delete(); //} //fi1.CopyTo(filePath2); ////var filePath = Server.MapPath(data.Rows[0]["pic_url"].ToString()); //file.Add(filePath2); try { file.CommitUpdate(); } catch (Exception ex) { throw new Exception(ex.Message); } buffer = new byte[ms.Length]; ms.Position = 0; ms.Read(buffer, 0, buffer.Length); } Response.AddHeader("content-disposition", "attachment;filename=" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".zip"); Response.BinaryWrite(buffer); Response.Flush(); Response.End(); } } }