using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.IO;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
using Model;
using BLL;
using BLL.Common;
namespace FineUIPro.Web.EditorManage
{
public partial class PMEditor : PageBase
{
protected void Page_Load(object sender, EventArgs e)
{
// 表头过滤
FilterDataRowItem = FilterDataRowItemImplement;
if (!IsPostBack)
{
// 特殊控制,不需要
// GetButtonPower();//权限设置
//类型
this.drpJobType.DataTextField = "ConstText";
this.drpJobType.DataValueField = "ConstId";
this.drpJobType.DataSource = BLL.ConstService.GetConstListByGroupId(BLL.Const.ProjectPlanner_JobType);
this.drpJobType.DataBind();
Funs.FineUIPleaseSelectJobType(this.drpJobType);
//状态
this.drpJobStatus.DataTextField = "ConstText";
this.drpJobStatus.DataValueField = "ConstId";
this.drpJobStatus.DataSource = BLL.ConstService.GetConstListByGroupId(BLL.Const.ProjectPlanner_JobStatus);
this.drpJobStatus.DataBind();
Funs.FineUIPleaseSelectJobStatus(this.drpJobStatus);
ddlPageSize.SelectedValue = Grid1.PageSize.ToString();
this.BindGrid();
if (CurrUser.UserId == Const.GlyId)
{
btnImport.Hidden = false;
fuAttachUrl.Hidden = false;
}
else
{
btnImport.Hidden = true;
fuAttachUrl.Hidden = true;
}
}
}
#region 过滤表头
///
/// 过滤表头
///
///
///
protected void Grid1_FilterChange(object sender, EventArgs e)
{
BindGrid();
}
///
/// 根据表头信息过滤列表数据
///
///
///
///
///
///
private bool FilterDataRowItemImplement(object sourceObj, string fillteredOperator, object fillteredObj, string column)
{
bool valid = false;
if (column == "ProjectControl_JobNo")
{
string sourceValue = sourceObj.ToString();
string fillteredValue = fillteredObj.ToString();
if (fillteredOperator == "equal" && sourceValue == fillteredValue)
{
valid = true;
}
else if (fillteredOperator == "contain" && sourceValue.Contains(fillteredValue))
{
valid = true;
}
}
if (column == "ProjectControl_JobType")
{
string sourceValue = sourceObj.ToString();
string fillteredValue = fillteredObj.ToString();
if (fillteredOperator == "equal" && sourceValue == fillteredValue)
{
valid = true;
}
else if (fillteredOperator == "contain" && sourceValue.Contains(fillteredValue))
{
valid = true;
}
}
if (column == "ProjectControl_JobTitle")
{
string sourceValue = sourceObj.ToString();
string fillteredValue = fillteredObj.ToString();
if (fillteredOperator == "equal" && sourceValue == fillteredValue)
{
valid = true;
}
else if (fillteredOperator == "contain" && sourceValue.Contains(fillteredValue))
{
valid = true;
}
}
if (column == "ProjectControl_JobStatus")
{
string sourceValue = sourceObj.ToString();
string fillteredValue = fillteredObj.ToString();
if (fillteredOperator == "equal" && sourceValue == fillteredValue)
{
valid = true;
}
else if (fillteredOperator == "contain" && sourceValue.Contains(fillteredValue))
{
valid = true;
}
}
if (column == "ProjectControl_BUCode")
{
string sourceValue = sourceObj.ToString();
string fillteredValue = fillteredObj.ToString();
if (fillteredOperator == "equal" && sourceValue == fillteredValue)
{
valid = true;
}
else if (fillteredOperator == "contain" && sourceValue.Contains(fillteredValue))
{
valid = true;
}
}
if (column == "PM_General_Priority")
{
string sourceValue = sourceObj.ToString();
string fillteredValue = fillteredObj.ToString();
if (fillteredOperator == "equal" && sourceValue == fillteredValue)
{
valid = true;
}
else if (fillteredOperator == "contain" && sourceValue.Contains(fillteredValue))
{
valid = true;
}
}
if (column == "PM_General_Category")
{
string sourceValue = sourceObj.ToString();
string fillteredValue = fillteredObj.ToString();
if (fillteredOperator == "equal" && sourceValue == fillteredValue)
{
valid = true;
}
else if (fillteredOperator == "contain" && sourceValue.Contains(fillteredValue))
{
valid = true;
}
}
return valid;
}
#endregion
#region 分页、排序
///
/// 分页
///
///
///
protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
{
Grid1.PageIndex = e.NewPageIndex;
BindGrid();
}
///
/// 分页显示条数下拉框
///
///
///
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
{
Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
BindGrid();
}
///
/// 排序
///
///
///
protected void Grid1_Sort(object sender, FineUIPro.GridSortEventArgs e)
{
Grid1.SortDirection = e.SortDirection;
Grid1.SortField = e.SortField;
BindGrid();
}
#endregion
#region 关闭弹出窗口
///
/// 关闭窗口
///
///
///
protected void Window1_Close(object sender, EventArgs e)
{
BindGrid();
}
#endregion
#region 编辑
///
/// 编辑
///
///
///
protected void btnEdit_Click(object sender, EventArgs e)
{
if (Grid1.SelectedRowIndexArray.Length == 0)
{
Alert.ShowInParent("Please select at least one line!");
return;
}
string Id = Grid1.SelectedRowID;
var eproject = BLL.EProjectService.GeteProjectById(Id);
if (eproject != null)
{
Window1.Title = "PM Editor(Job No. " + eproject.ProjectControl_JobNo + ")";
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("PMEditorEdit.aspx?EProjectId={0}", Id, "编辑 - ")));
}
}
///
/// Grid行双击事件
///
///
///
protected void Grid1_RowDoubleClick(object sender, GridRowClickEventArgs e)
{
btnEdit_Click(null, null);
}
///
/// 右键编辑事件
///
///
///
protected void btnMenuEdit_Click(object sender, EventArgs e)
{
btnEdit_Click(null, null);
}
#endregion
#region 查询
///查询
protected void btnSearch_Click(object sender, EventArgs e)
{
BindGrid();
}
#endregion
///
/// BindGrid
///
private void BindGrid()
{
string strSql = @"SELECT EProjectId,ProjectControl_JobNo,ProjectControl_JobType,
ProjectControl_JobStatus,ProjectControl_JobTitle,ProjectControl_BUCode,
PM_General_Priority,PM_General_Category
FROM dbo.Editor_EProject
WHERE 1=1 ";
List listStr = new List();
if (this.CurrUser.UserId != Const.GlyId && this.CurrUser.RoleId != Const.Role_PPE)
{
strSql += " AND (ProjectControl_ProjectManagerId = @UserId OR ProjectControl_EMManagerId = @UserId) ";
listStr.Add(new SqlParameter("@UserId", this.CurrUser.UserId));
}
if (this.drpJobType.SelectedValue != BLL.Const._Null)
{
strSql += " AND ProjectControl_JobType=@JobType ";
listStr.Add(new SqlParameter("@JobType", this.drpJobType.SelectedItem.Text));
}
if (this.drpJobStatus.SelectedValue != BLL.Const._Null)
{
strSql += " AND ProjectControl_JobStatus=@Status ";
listStr.Add(new SqlParameter("@Status", this.drpJobStatus.SelectedItem.Text));
}
if (!string.IsNullOrEmpty(this.txtJobNO.Text.Trim()))
{
strSql += " AND ProjectControl_JobNo LIKE @jobNO ";
listStr.Add(new SqlParameter("@jobNO", this.txtJobNO.Text.Trim() + "%"));
}
SqlParameter[] parameter = listStr.ToArray();
DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
// 2.获取当前分页数据
//var table = this.GetPagedDataTable(Grid1, tb1);
Grid1.RecordCount = tb.Rows.Count;
tb = GetFilteredTable(Grid1.FilteredData, tb);
var table = this.GetPagedDataTable(Grid1, tb);
Grid1.DataSource = table;
Grid1.DataBind();
}
#region 权限设置
///
/// 菜单按钮权限
///
private void GetButtonPower()
{
var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.UserId, BLL.Const.PMEditorMenuId);
if (buttonList.Count() > 0)
{
if (buttonList.Contains(BLL.Const.BtnModify))
{
this.btnEdit.Hidden = false;
this.btnMenuEdit.Hidden = false;
this.Grid1.EnableRowDoubleClickEvent = true;
}
else
{
this.Grid1.EnableRowDoubleClickEvent = false;
}
}
}
#endregion
#region 查看
///
/// 查看
///
///
///
protected void btnMenuView_Click(object sender, EventArgs e)
{
if (Grid1.SelectedRowIndexArray.Length == 0)
{
Alert.ShowInParent("Please select at least one line!");
return;
}
string Id = Grid1.SelectedRowID;
var eproject = BLL.EProjectService.GeteProjectById(Id);
if (eproject != null)
{
Window1.Title = "PM Editor(Job No. " + eproject.ProjectControl_JobNo + ")";
}
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("PMEditorEdit.aspx?EProjectId={0}&view=1", Id, "查看 - ")));
}
#endregion
#region 导入
#region 定义项
///
/// 上传预设的虚拟路径
///
private string initPath = Const.ExcelUrl;
///
/// 错误集合
///
public static string errorInfos = string.Empty;
#endregion
#region 格式验证及转换
///
/// 时间格式验证
///
///
///
private static string TimeValidation(object time)
{
string message = string.Empty;
try
{
if (time.ToString().Contains("."))
{
DateTime.ParseExact(time.ToString(), "dd.MM.yyyy", CultureInfo.InvariantCulture);
}
else
{
Convert.ToDateTime(time);
}
}
catch (Exception ex)
{
message = "Please enter a valid time format!";
}
return message;
}
public static DateTime TimeValue(object value)
{
string dateValue = string.Empty;
if (value != null)
{
if (value.ToString().Contains("."))
{
dateValue = DateTime.ParseExact(value.ToString(), "dd.MM.yyyy", CultureInfo.InvariantCulture).ToString("yyyy-MM-dd");
}
else
{
dateValue = DateTime.Parse(value.ToString()).ToString("yyyy-MM-dd");
}
}
return DateTime.Parse(dateValue);
}
#endregion
#region 导入
///
/// 导入
///
///
///
protected void btnImport_Click(object sender, EventArgs e)
{
string message = string.Empty;
errorInfos = string.Empty;
List ProjectList = new List();
try
{
if (this.fuAttachUrl.HasFile == false)
{
ShowNotify("Please select Excel file!", MessageBoxIcon.Warning);
return;
}
string IsXls = Path.GetExtension(this.fuAttachUrl.FileName).ToString().Trim().ToLower();
if (IsXls != ".xls" && IsXls != ".xlsx")
{
ShowNotify("Only Excel files can be selected!", MessageBoxIcon.Warning);
return;
}
if (ProjectList != null)
{
ProjectList.Clear();
}
if (!string.IsNullOrEmpty(errorInfos))
{
errorInfos = string.Empty;
}
string rootPath = Server.MapPath("~/");
string initFullPath = rootPath + initPath;
if (!Directory.Exists(initFullPath))
{
Directory.CreateDirectory(initFullPath);
}
//指定上传文件名称
this.hdFileName.Text = BLL.Funs.GetNewFileName() + IsXls;
//上传文件路径
string filePath = initFullPath + this.hdFileName.Text;
//文件上传服务器
this.fuAttachUrl.PostedFile.SaveAs(filePath);
//文件上传服务器后的名称
string fileName = rootPath + initPath + this.hdFileName.Text;
//读取Excel
DataSet ds = NPOIHelper.ExcelToDataSet(fileName, out errorInfos, true);
//验证Excel读取是否有误
if (!string.IsNullOrEmpty(errorInfos))
{
ShowNotify(errorInfos, MessageBoxIcon.Warning,15000);
return;
}
if (ds.Tables.Count > 0)
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
Editor_EProject project = new Editor_EProject();
#region 数据验证和赋值
string jobNo = ds.Tables[0].Rows[i]["Job No."].ToString();
if (!string.IsNullOrEmpty(jobNo))
{
var pro = BLL.EProjectService.GeteProjectByJobNO(jobNo);
if (pro != null)
{
project.EProjectId = pro.EProjectId;
}
else
{
errorInfos += (i + 2) + "Line, [Job No.] does not exist!";
}
}
else
{
errorInfos += (i + 2) + "Line, [Job No.] cannot be empty!";
}
if (ds.Tables[0].Rows[i]["Date_Plan EHS Review Files"] != null && !string.IsNullOrEmpty(ds.Tables[0].Rows[i]["Date_Plan EHS Review Files"].ToString()))
{
try
{
message = TimeValidation(ds.Tables[0].Rows[i]["Date_Plan EHS Review Files"]);
if (string.IsNullOrEmpty(message))
{
project.Job_PlanEHSReview_Files = TimeValue(ds.Tables[0].Rows[i]["Date_Plan EHS Review Files"]);
}
else
{
errorInfos += (i + 2) + " Line, [Date_Plan EHS Review Files]" + message + "";
}
}
catch (Exception)
{
errorInfos += (i + 2) + " Line, [Date_Plan EHS Review Files]" + message + "";
}
}
if (ds.Tables[0].Rows[i]["Date_Act EHS Review Files"] != null && !string.IsNullOrEmpty(ds.Tables[0].Rows[i]["Date_Act EHS Review Files"].ToString()))
{
try
{
message = TimeValidation(ds.Tables[0].Rows[i]["Date_Act EHS Review Files"]);
if (string.IsNullOrEmpty(message))
{
project.Job_EHSReview_Files = TimeValue(ds.Tables[0].Rows[i]["Date_Act EHS Review Files"]);
}
else
{
errorInfos += (i + 2) + " Line, [Date_Act EHS Review Files]" + message + "";
}
}
catch (Exception)
{
errorInfos += (i + 2) + " Line, [Date_Act EHS Review Files]" + message + "";
}
}
if (ds.Tables[0].Rows[i]["Date_EHS Review Meeting"] != null && !string.IsNullOrEmpty(ds.Tables[0].Rows[i]["Date_EHS Review Meeting"].ToString()))
{
try
{
message = TimeValidation(ds.Tables[0].Rows[i]["Date_EHS Review Meeting"]);
if (string.IsNullOrEmpty(message))
{
project.Job_EHSReview_Meeting = TimeValue(ds.Tables[0].Rows[i]["Date_EHS Review Meeting"]);
}
else
{
errorInfos += (i + 2) + " Line, [Date_EHS Review Meeting]" + message + "";
}
}
catch (Exception)
{
errorInfos += (i + 2) + " Line, [Date_EHS Review Meeting]" + message + "";
}
}
if (ds.Tables[0].Rows[i]["Date_Estimate Worksheet"] != null && !string.IsNullOrEmpty(ds.Tables[0].Rows[i]["Date_Estimate Worksheet"].ToString()))
{
try
{
message = TimeValidation(ds.Tables[0].Rows[i]["Date_Estimate Worksheet"]);
if (string.IsNullOrEmpty(message))
{
project.Job_Estimate_Worksheet = TimeValue(ds.Tables[0].Rows[i]["Date_Estimate Worksheet"]);
}
else
{
errorInfos += (i + 2) + " Line, [Date_Estimate Worksheet]" + message + "";
}
}
catch (Exception)
{
errorInfos += (i + 2) + " Line, [Date_Estimate Worksheet]" + message + "";
}
}
if (ds.Tables[0].Rows[i]["Date_Budget"] != null && !string.IsNullOrEmpty(ds.Tables[0].Rows[i]["Date_Budget"].ToString()))
{
try
{
message = TimeValidation(ds.Tables[0].Rows[i]["Date_Budget"]);
if (string.IsNullOrEmpty(message))
{
project.Job_Budget = TimeValue(ds.Tables[0].Rows[i]["Date_Budget"]);
}
else
{
errorInfos += (i + 2) + " Line, [Date_Budget]" + message + "";
}
}
catch (Exception)
{
errorInfos += (i + 2) + " Line, [Date_Budget]" + message + "";
}
}
if (ds.Tables[0].Rows[i]["Date_Teco_Study"] != null && !string.IsNullOrEmpty(ds.Tables[0].Rows[i]["Date_Teco_Study"].ToString()))
{
try
{
message = TimeValidation(ds.Tables[0].Rows[i]["Date_Teco_Study"]);
if (string.IsNullOrEmpty(message))
{
project.Job_TecoAlarm_Study = TimeValue(ds.Tables[0].Rows[i]["Date_Teco_Study"]);
}
else
{
errorInfos += (i + 2) + " Line, [Date_Teco_Study]" + message + "";
}
}
catch (Exception)
{
errorInfos += (i + 2) + " Line, [Date_Teco_Study]" + message + "";
}
}
if (ds.Tables[0].Rows[i]["Date_Plan IFC"] != null && !string.IsNullOrEmpty(ds.Tables[0].Rows[i]["Date_Plan IFC"].ToString()))
{
try
{
message = TimeValidation(ds.Tables[0].Rows[i]["Date_Plan IFC"]);
if (string.IsNullOrEmpty(message))
{
project.Job_Plan_IFC = TimeValue(ds.Tables[0].Rows[i]["Date_Plan IFC"]);
}
else
{
errorInfos += (i + 2) + " Line, [Date_Plan IFC]" + message + "";
}
}
catch (Exception)
{
errorInfos += (i + 2) + " Line, [Date_Plan IFC]" + message + "";
}
}
if (ds.Tables[0].Rows[i]["Hold_Date"] != null && !string.IsNullOrEmpty(ds.Tables[0].Rows[i]["Hold_Date"].ToString()))
{
try
{
message = TimeValidation(ds.Tables[0].Rows[i]["Hold_Date"]);
if (string.IsNullOrEmpty(message))
{
project.Job_Hold = TimeValue(ds.Tables[0].Rows[i]["Hold_Date"]);
}
else
{
errorInfos += (i + 2) + " Line, [Hold_Date]" + message + "";
}
}
catch (Exception)
{
errorInfos += (i + 2) + " Line, [Hold_Date]" + message + "";
}
}
if (ds.Tables[0].Rows[i]["Delay by team 1"] != null && !string.IsNullOrEmpty(ds.Tables[0].Rows[i]["Delay by team 1"].ToString()))
{
project.Job_Delaybyteam1 = ds.Tables[0].Rows[i]["Delay by team 1"].ToString();
}
else
{
project.Job_Delaybyteam1 = null;
}
if (ds.Tables[0].Rows[i]["Delay by personel 1"] != null && !string.IsNullOrEmpty(ds.Tables[0].Rows[i]["Delay by personel 1"].ToString()))
{
project.Job_Delaybypersonel1 = ds.Tables[0].Rows[i]["Delay by personel 1"].ToString();
}
else
{
project.Job_Delaybypersonel1 = null;
}
if (ds.Tables[0].Rows[i]["Remark 1"] != null && !string.IsNullOrEmpty(ds.Tables[0].Rows[i]["Remark 1"].ToString()))
{
project.Job_Remark1 = ds.Tables[0].Rows[i]["Remark 1"].ToString();
}
else
{
project.Job_Remark1 = null;
}
if (ds.Tables[0].Rows[i]["Delay by team 2"] != null && !string.IsNullOrEmpty(ds.Tables[0].Rows[i]["Delay by team 2"].ToString()))
{
project.Job_Delaybyteam2 = ds.Tables[0].Rows[i]["Delay by team 2"].ToString();
}
else
{
project.Job_Delaybyteam2 = null;
}
if (ds.Tables[0].Rows[i]["Delay by personel 2"] != null && !string.IsNullOrEmpty(ds.Tables[0].Rows[i]["Delay by personel 2"].ToString()))
{
project.Job_Delaybypersonel2 = ds.Tables[0].Rows[i]["Delay by personel 2"].ToString();
}
else
{
project.Job_Delaybypersonel2 = null;
}
if (ds.Tables[0].Rows[i]["Remark 2"] != null && !string.IsNullOrEmpty(ds.Tables[0].Rows[i]["Remark 2"].ToString()))
{
project.Job_Remark2 = ds.Tables[0].Rows[i]["Remark 2"].ToString();
}
else
{
project.Job_Remark2 = null;
}
if (ds.Tables[0].Rows[i]["Delay by team 3"] != null && !string.IsNullOrEmpty(ds.Tables[0].Rows[i]["Delay by team 3"].ToString()))
{
project.Job_Delaybyteam3 = ds.Tables[0].Rows[i]["Delay by team 3"].ToString();
}
else
{
project.Job_Delaybyteam3 = null;
}
if (ds.Tables[0].Rows[i]["Delay by personel 3"] != null && !string.IsNullOrEmpty(ds.Tables[0].Rows[i]["Delay by personel 3"].ToString()))
{
project.Job_Delaybypersonel3 = ds.Tables[0].Rows[i]["Delay by personel 3"].ToString();
}
else
{
project.Job_Delaybypersonel3 = null;
}
if (ds.Tables[0].Rows[i]["Remark 3"] != null && !string.IsNullOrEmpty(ds.Tables[0].Rows[i]["Remark 3"].ToString()))
{
project.Job_Remark3 = ds.Tables[0].Rows[i]["Remark 3"].ToString();
}
else
{
project.Job_Remark3 = null;
}
ProjectList.Add(project);
#endregion
}
if (!string.IsNullOrEmpty(errorInfos))
{
ShowNotify(errorInfos, MessageBoxIcon.Warning, 10000);
return;
}
if (ProjectList.Count > 0)
{
foreach (var item in ProjectList)
{
Model.Editor_EProject upEpro = Funs.DB.Editor_EProject.FirstOrDefault(x => x.EProjectId == item.EProjectId);
if (upEpro != null)
{
upEpro.Job_PlanEHSReview_Files = item.Job_PlanEHSReview_Files;
upEpro.Job_EHSReview_Files = item.Job_EHSReview_Files;
upEpro.Job_EHSReview_Meeting = item.Job_EHSReview_Meeting;
upEpro.Job_Estimate_Worksheet = item.Job_Estimate_Worksheet;
upEpro.Job_Budget = item.Job_Budget;
upEpro.Job_TecoAlarm_Study = item.Job_TecoAlarm_Study;
upEpro.Job_Plan_IFC = item.Job_Plan_IFC;
upEpro.Job_Hold = item.Job_Hold;
upEpro.Job_Delaybyteam1 = item.Job_Delaybyteam1;
upEpro.Job_Delaybypersonel1 = item.Job_Delaybypersonel1;
upEpro.Job_Remark1 = item.Job_Remark1;
upEpro.Job_Delaybyteam2 = item.Job_Delaybyteam2;
upEpro.Job_Delaybypersonel2 = item.Job_Delaybypersonel2;
upEpro.Job_Remark2 = item.Job_Remark2;
upEpro.Job_Delaybyteam3 = item.Job_Delaybyteam3;
upEpro.Job_Delaybypersonel3 = item.Job_Delaybypersonel3;
upEpro.Job_Remark3 = item.Job_Remark3;
Funs.DB.SubmitChanges();
}
}
}
//BindGrid();
ShowNotify("Import success!", MessageBoxIcon.Success);
PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
}
else
{
ShowAlert("No data!", MessageBoxIcon.Warning);
return;
}
}
catch (Exception ex)
{
ShowAlert("'" + ex.Message + "'", MessageBoxIcon.Warning);
}
}
#endregion
#endregion
}
}