using BLL;
using BLL.Common;
using Model;
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Data;
using System.IO;
namespace FineUIPro.Web.EditorManage
{
public partial class LessonsLearnedEditorIn : PageBase
{
#region 定义项
///
/// 上传预设的虚拟路径
///
private string initPath = Const.ExcelUrl;
///
/// 错误集合
///
public static string errorInfos = string.Empty;
#endregion
#region 加载
///
/// 加载页面
///
///
///
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
}
}
#endregion
#region 模板下载
///
/// 模板下载
///
///
///
protected void btnDownLoad_Click(object sender, EventArgs e)
{
PageContext.RegisterStartupScript(Confirm.GetShowReference("Are you sure to download the import template?", String.Empty, MessageBoxIcon.Question, PageManager1.GetCustomEventReference(false, "Confirm_OK"), PageManager1.GetCustomEventReference("Confirm_Cancel")));
}
///
/// 下载导入模板
///
///
///
protected void PageManager1_CustomEvent(object sender, CustomEventArgs e)
{
if (e.EventArgument == "Confirm_OK")
{
string rootPath = Server.MapPath("~/");
string uploadfilepath = rootPath + Const.LessonsLearnedTemplateUrl;
string filePath = Const.LessonsLearnedTemplateUrl;
string fileName = Path.GetFileName(filePath);
FileInfo info = new FileInfo(uploadfilepath);
long fileSize = info.Length;
Response.ClearContent();
Response.AddHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
Response.ContentType = "excel/plain";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.AddHeader("Content-Length", fileSize.ToString().Trim());
Response.TransmitFile(uploadfilepath, 0, fileSize);
Response.End();
}
}
#endregion
#region 导入
///
/// 导入
///
///
///
protected void btnImport_Click(object sender, EventArgs e)
{
string message = string.Empty;
errorInfos = string.Empty;
List lessonsLearneds = 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 (lessonsLearneds != null)
{
lessonsLearneds.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);
return;
}
//导入数据库
if (ds.Tables.Count > 0)
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
Editor_LessonsLearned lessonsLearned = new Editor_LessonsLearned();
#region 数据验证和赋值
string lessonsId = ds.Tables[0].Rows[i]["Lessons ID"].ToString();
if (lessonsId != null && !string.IsNullOrEmpty(lessonsId))
{
lessonsLearned.Id = lessonsId;
}
else
{
errorInfos += (i + 2) + "Line, [Lessons ID] cannot be empty";
}
if (ds.Tables[0].Rows[i]["Entry Date"] != null && !string.IsNullOrEmpty(ds.Tables[0].Rows[i]["Entry Date"].ToString()))
{
try
{
lessonsLearned.EntryDate = Funs.GetNewDateTime(ds.Tables[0].Rows[i]["Entry Date"].ToString());
}
catch (Exception)
{
errorInfos += (i + 2) + "line,[Entry Date]Must be in datetime format";
}
}
lessonsLearned.AppliedDiscip = ds.Tables[0].Rows[i]["Applied Discip"].ToString();
lessonsLearned.Stage = ds.Tables[0].Rows[i]["Stage"].ToString();
lessonsLearned.Keyword = ds.Tables[0].Rows[i]["KeyWord"].ToString();
lessonsLearned.PostBy = ds.Tables[0].Rows[i]["Post By"].ToString();
lessonsLearned.Description = ds.Tables[0].Rows[i]["Description"].ToString();
lessonsLearned.RootCause = ds.Tables[0].Rows[i]["Root Cause"].ToString();
lessonsLearned.LessonLearned = ds.Tables[0].Rows[i]["Best Practise & Lesson Learned"].ToString();
string eprojectId = Request.Params["eProjectId"];
if (eprojectId != null)
{
lessonsLearned.EProjectId = eprojectId;
var eproject = BLL.EProjectService.GeteProjectById(eprojectId);
if (eproject != null)
{
lessonsLearned.JobNo = eproject.ProjectControl_JobNo;
}
}
lessonsLearned.LessonsLearnedId = SQLHelper.GetNewID(typeof(Model.Editor_LessonsLearned));
lessonsLearneds.Add(lessonsLearned);
#endregion
}
if (!string.IsNullOrEmpty(errorInfos))
{
ShowNotify(errorInfos, MessageBoxIcon.Warning, 10000);
return;
}
//去除集合中重复的数据
for (int i = 0; i < lessonsLearneds.Count; i++)
{
for (int j = lessonsLearneds.Count - 1; j > i; j--)
{
if (lessonsLearneds[i].Id == lessonsLearneds[j].Id)
{
lessonsLearneds.RemoveAt(j);
}
}
}
//判断数据库是否有相同日期和项目的数据
var lists = new List();
for (int i = 0; i < lessonsLearneds.Count; i++)
{
var newlessons = BLL.LessonsLearnedService.GetLessonsLearnedByEprojectIdAndId(lessonsLearneds[i].EProjectId, lessonsLearneds[i].Id);
if (newlessons == null)
{
lists.Add(lessonsLearneds[i]);
}
}
if (lists.Count > 0)
{
Funs.DB.Editor_LessonsLearned.InsertAllOnSubmit(lists);
Funs.DB.SubmitChanges();
}
#region 邮件发送
string eproId = Request.Params["eProjectId"];
var ep = BLL.EProjectService.GeteProjectById(eproId);
if (ep != null)
{
if (Funs.GetNewDecimal(ep.ProjectControl_OrginalBudget.ToString()) > 10000000)
{
NameValueCollection nameValue = new NameValueCollection();
nameValue.Add("projectName", ep.ProjectControl_JobTitle.ToString().Trim());
nameValue.Add("projectNo", ep.ProjectControl_JobNo.ToString().Trim());
nameValue.Add("projectBUCode", ep.ProjectControl_BUCode);
EmailSendMessage(ep, BLL.Const.LLPString, nameValue, BLL.Const.CustomString, BLL.Const.NoprojectString);
}
}
#endregion
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
}
}