Basf_EProject/EProject/FineUIPro.Web/EditorManage/PunchEditorIn.aspx.cs

378 lines
16 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 BLL;
using BLL.Common;
using Model;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace FineUIPro.Web.EditorManage
{
public partial class PunchEditorIn : PageBase
{
#region
/// <summary>
/// 上传预设的虚拟路径
/// </summary>
private string initPath = Const.ExcelUrl;
/// <summary>
/// 错误集合
/// </summary>
public static string errorInfos = string.Empty;
#endregion
#region
/// <summary>
/// 加载页面
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
}
}
#endregion
#region
/// <summary>
/// 模板下载
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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")));
}
/// <summary>
/// 下载导入模板
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void PageManager1_CustomEvent(object sender, CustomEventArgs e)
{
if (e.EventArgument == "Confirm_OK")
{
string rootPath = Server.MapPath("~/");
string uploadfilepath = rootPath + Const.PunchTemplateUrl;
string filePath = Const.PunchTemplateUrl;
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
/// <summary>
/// 导入
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnImport_Click(object sender, EventArgs e)
{
string message = string.Empty;
errorInfos = string.Empty;
List<Editor_Punch> punchs = new List<Editor_Punch>();
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 (punchs != null)
{
punchs.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;
}
//导入数据库
var disciplines = (from x in Funs.DB.Base_Const where x.GroupId == BLL.Const.PunchDetails_Discipline select x).ToList();
var classs = (from x in Funs.DB.Base_Const where x.GroupId == BLL.Const.Resourses_Class select x).ToList();
var users = (from x in Funs.DB.Sys_User select x).ToList();
var project = (from x in Funs.DB.Editor_EProject select x).ToList();
//var actionType = (from x in Funs.DB.Base_Const where x.GroupId == BLL.Const.Punch_ActionType select x).ToList();
string tagno = string.Empty;
string p = Request.Params["eProjectId"];
if (ds.Tables.Count > 0)
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
Editor_Punch punch = new Editor_Punch();
#region
string jobno = ds.Tables[0].Rows[i]["Job No"].ToString();
var epro = project.Where(x => x.ProjectControl_JobNo == jobno).FirstOrDefault();
if (epro != null)
{
if (epro.EProjectId == p)
{
punch.EProjectId = epro.EProjectId;
if (i == 0)
{
tagno = BLL.SQLHelper.RunProcNewId("SpGetNewCodeByJobNo3", "dbo.Editor_Punch", "TagNo", jobno + "-");
punch.TagNo = tagno;
}
else
{
string[] ts = tagno.Split('-');
string d = (Convert.ToInt32(ts[1]) + i).ToString("000");
string t = ts[0] + "-" + d;
punch.TagNo = t;
}
}
else
{
errorInfos += (i + 2) + "Line, The selected [Job No] and imported [Job No] are different!</br>";
}
}
else
{
errorInfos += (i + 2) + "Line, [Job No] not exist!</br>";
}
string area = ds.Tables[0].Rows[i]["Area"].ToString();
if (area != null && !string.IsNullOrEmpty(area))
{
punch.Area = area;
}
else
{
errorInfos += (i + 2) + "Line, [Area] cannot be empty!</br>";
}
string discipline = ds.Tables[0].Rows[i]["Discipline"].ToString();
if (discipline != null && !string.IsNullOrEmpty(discipline))
{
var dis = disciplines.Where(x => x.ConstText == discipline).FirstOrDefault();
if (dis != null)
{
punch.DisciplineId = dis.ConstId;
punch.DisciplineName = discipline;
}
else
{
errorInfos += (i + 2) + "Line, [Discipline] not exist!</br>";
}
}
//else
//{
// errorInfos += (i + 2) + "Line, [Discipline] cannot be empty!</br>";
//}
punch.Description = ds.Tables[0].Rows[i]["Description"].ToString();
string action = ds.Tables[0].Rows[i]["Action to be taken"].ToString();
if (action != null && !string.IsNullOrEmpty(action))
{
punch.ActionType = action;
//var t = actionType.Where(x => x.ConstText == action).FirstOrDefault();
//if (t != null)
//{
// punch.ActionType = t.ConstValue;
//}
//else
//{
// errorInfos += (i + 5) + "Line, [Action type] not exist!</br>";
//}
}
else
{
errorInfos += (i + 2) + "Line, [Action to be taken] cannot be empty!</br>";
}
string cla = ds.Tables[0].Rows[i]["Priority"].ToString();
if (cla != null && !string.IsNullOrEmpty(cla))
{
var cl = classs.Where(x => cla == (x.ConstText.Split(':')[0])).FirstOrDefault();
if (cl != null)
{
punch.ClassId = cl.ConstId;
punch.ClassName = cl.ConstValue;
}
else
{
errorInfos += (i + 2) + "Line, [Priority] not exist!</br>";
}
}
else
{
errorInfos += (i + 2) + "Line, [Priority] cannot be empty!</br>";
}
punch.RespUnitPerson = ds.Tables[0].Rows[i]["Responsible Contractor"].ToString();
punch.BYC_Person = ds.Tables[0].Rows[i]["Responsible BYC person"].ToString();
punch.InitiatedByName = ds.Tables[0].Rows[i]["Initiated By Name"].ToString();
//string byc = ds.Tables[0].Rows[i]["Responsible BYC person"].ToString();
//if (byc != null && !string.IsNullOrEmpty(byc))
//{
// var res = users.Where(x => x.Account.ToLower() == byc.ToLower()).FirstOrDefault();
// if (res != null)
// {
// punch.BYC_Person = res.UserId;
// }
//}
//string initName = ds.Tables[0].Rows[i]["Initiated By Name"].ToString();
//if (initName != null && !string.IsNullOrEmpty(initName))
//{
// var res = users.Where(x => x.Account.ToLower() == initName.ToLower()).FirstOrDefault();
// if (res != null)
// {
// punch.InitiatedByName = res.UserId;
// }
//}
string initDate = ds.Tables[0].Rows[i]["Initiated By Date"].ToString();
if (initDate != null && !string.IsNullOrEmpty(initDate))
{
try
{
punch.InitiatedByDate = Funs.GetNewDateTime(initDate);
}
catch (Exception)
{
errorInfos += (i + 2) + "line[Initiated By Date]Must be in datetime format</br>";
}
}
string planedFinishDate = ds.Tables[0].Rows[i]["Expected Finish Date"].ToString();
if (planedFinishDate != null && !string.IsNullOrEmpty(planedFinishDate))
{
try
{
punch.PlanedFinishDate = Funs.GetNewDateTime(planedFinishDate);
}
catch (Exception)
{
errorInfos += (i + 2) + "line[Expected Finish Date]Must be in datetime format</br>";
}
}
punch.ResiedById = CurrUser.UserId;
punch.ResiedByName = CurrUser.UserName;
//string writer = ds.Tables[0].Rows[i]["Input By"].ToString();
//if (writer != null && !string.IsNullOrEmpty(writer))
//{
// var res = users.Where(x => x.Account.ToLower() == writer.ToLower()).FirstOrDefault();
// if (res != null)
// {
// punch.ResiedById = res.UserId;
// punch.ResiedByName = res.UserName;
// }
//}
//string CTEChecker = ds.Tables[0].Rows[i]["CTE Check Name"].ToString();
//if (CTEChecker != null && !string.IsNullOrEmpty(CTEChecker))
//{
// var checker = users.Where(x => x.Account.ToLower() == CTEChecker.ToLower()).FirstOrDefault();
// if (checker != null)
// {
// punch.CTECheckerId = checker.UserId;
// punch.CTECheckerName = checker.UserName;
// }
// else
// {
// errorInfos += (i + 2) + "Line, [CTE Checker] not exist!</br>";
// }
//}
//string ownerChecker = ds.Tables[0].Rows[i]["Owner Check Name"].ToString();
//if (ownerChecker != null && !string.IsNullOrEmpty(ownerChecker))
//{
// var owner = users.Where(x => x.Account.ToLower() == ownerChecker.ToLower()).FirstOrDefault();
// if (owner != null)
// {
// punch.OwnerCheckerId = owner.UserId;
// punch.OwnerCheckerName = owner.UserName;
// }
//}
punch.Remark = ds.Tables[0].Rows[i]["Remark"].ToString();
punch.PunchId = SQLHelper.GetNewID(typeof(Model.Editor_Punch));
punchs.Add(punch);
#endregion
}
if (!string.IsNullOrEmpty(errorInfos))
{
ShowNotify(errorInfos, MessageBoxIcon.Warning, 10000);
return;
}
if (punchs.Count > 0)
{
Funs.DB.Editor_Punch.InsertAllOnSubmit(punchs);
Funs.DB.SubmitChanges();
}
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
}
}