461 lines
17 KiB
C#
461 lines
17 KiB
C#
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("撤销试卷发布失败!");
|
||
}
|
||
}
|
||
}
|
||
} |