gyhlw_dotnet/网站项目/VRS/Management/VSAT/Examination.aspx.cs

461 lines
17 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 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<DataService.Model.pro_result> 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<DataService.Model.pro_result> list_result = new List<DataService.Model.pro_result>();
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();
}
}
/// <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("船型");
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("撤销试卷发布失败!");
}
}
}
}