gyhlw_dotnet/网站项目/VRS/Management/Exam/ResultQueryMatch.aspx.cs

473 lines
18 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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<string> list_result = new List<string>();
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, "");
}
/// <summary>
/// 导出excel
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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();
}
}
}