xinjiang/SGGL/FineUIPro.Web/SubPackManage/SubPackPersonnelRegistratio...

648 lines
27 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 System;
using System.Collections.Generic;
using System.Data.OleDb;
using System.Data;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using FineUIPro.Web.HSSE.License;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
using FineUIPro.Web.DataShow;
namespace FineUIPro.Web.SubPackManage
{
public partial class SubPackPersonnelRegistrationIn : PageBase
{
#region
/// <summary>
/// 上传预设的虚拟路径
/// </summary>
private string initPath = Const.ExcelUrl;
/// <summary>
/// 人员集合
/// </summary>
public List<Model.SubPack_SubPackPersonnel> persons
{
get
{
return Session["SubPackPersonnelRegistrationIn"] as List<Model.SubPack_SubPackPersonnel>;
}
set
{
Session["SubPackPersonnelRegistrationIn"] = value;
}
}
/// <summary>
/// 错误集合
/// </summary>
public static string errorInfos = string.Empty;
/// <summary>
/// 所属项目
/// </summary>
public string ProjectId
{
get
{
return (string)ViewState["ProjectId"];
}
set
{
ViewState["ProjectId"] = value;
}
}
#endregion
#region
/// <summary>
/// 加载页面
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
persons = new List<Model.SubPack_SubPackPersonnel>();
this.ProjectId = this.CurrUser.LoginProjectId;
this.hdFileName.Text = string.Empty;
this.hdCheckResult.Text = string.Empty;
if (persons != null)
{
persons.Clear();
}
errorInfos = string.Empty;
}
}
#endregion
#region
/// <summary>
/// 审核
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnAudit_Click(object sender, EventArgs e)
{
try
{
if (this.fuAttachUrl.HasFile == false)
{
ShowNotify("请您选择Excel文件", MessageBoxIcon.Warning);
return;
}
string IsXls = Path.GetExtension(this.fuAttachUrl.FileName).ToString().Trim().ToLower();
if (IsXls != ".xls")
{
ShowNotify("只可以选择Excel文件", MessageBoxIcon.Warning);
return;
}
if (persons != null)
{
persons.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);
ImportXlsToData(rootPath + initPath + this.hdFileName.Text);
}
catch (Exception ex)
{
ShowNotify("'" + ex.Message + "'", MessageBoxIcon.Warning);
}
}
#region Excel提取数据
/// <summary>
/// 从Excel提取数据--》Dataset
/// </summary>
/// <param name="filename">Excel文件路径名</param>
private void ImportXlsToData(string fileName)
{
try
{
string oleDBConnString = String.Empty;
oleDBConnString = "Provider=Microsoft.Jet.OLEDB.4.0;";
oleDBConnString += "Data Source=";
oleDBConnString += fileName;
oleDBConnString += ";Extended Properties='Excel 8.0;IMEX=1; 8.0;HDR=1;'";
OleDbConnection oleDBConn = null;
OleDbDataAdapter oleAdMaster = null;
DataTable m_tableName = new DataTable();
DataSet ds = new DataSet();
oleDBConn = new OleDbConnection(oleDBConnString);
oleDBConn.Open();
m_tableName = oleDBConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
if (m_tableName != null && m_tableName.Rows.Count > 0)
{
m_tableName.TableName = m_tableName.Rows[0]["TABLE_NAME"].ToString().Trim();
}
string sqlMaster;
sqlMaster = " SELECT * FROM [" + m_tableName.TableName + "]";
oleAdMaster = new OleDbDataAdapter(sqlMaster, oleDBConn);
oleAdMaster.Fill(ds, "m_tableName");
oleAdMaster.Dispose();
oleDBConn.Close();
oleDBConn.Dispose();
AddDatasetToSQL(ds.Tables[0], 7);
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region Dataset的数据导入数据库
/// <summary>
/// 将Dataset的数据导入数据库
/// </summary>
/// <param name="pds">数据集</param>
/// <param name="Cols">数据集行数</param>
/// <returns></returns>
private bool AddDatasetToSQL(DataTable pds, int Cols)
{
string result = string.Empty;
int ic, ir;
ic = pds.Columns.Count;
if (ic < Cols)
{
Alert.ShowInTop("导入Excel格式错误Excel只有" + ic.ToString().Trim() + "行", MessageBoxIcon.Warning);
}
ir = pds.Rows.Count;
if (pds != null && ir > 0)
{
var units = (from x in Funs.DB.Base_Unit
join y in Funs.DB.Project_ProjectUnit on x.UnitId equals y.UnitId
where y.UnitType == "2" && y.ProjectId == this.ProjectId
select x);
var branchTeamLists = from x in Funs.DB.View_SubPack_TeamList where x.ProjectId == this.ProjectId select x;
var laborTeams = from x in Funs.DB.SubPack_LaborTeam where x.ProjectId == this.ProjectId select x;
var branchTeamListTeams = from x in Funs.DB.SubPack_BranchTeamListTeam where x.ProjectId == this.ProjectId select x;
List<string> identityCards = new List<string>();
for (int i = 0; i < ir; i++)
{
string col0 = pds.Rows[i][0].ToString().Trim();
if (!string.IsNullOrEmpty(col0))
{
string unitID = string.Empty;
string branchTeamListId = string.Empty;
string laborTeamListId = string.Empty;
string teamId = string.Empty;
if (string.IsNullOrEmpty(col0))
{
result += "第" + (i + 2).ToString() + "行," + "人员姓名" + "," + "此项为必填项!" + "|";
}
string col1 = pds.Rows[i][1].ToString().Trim();
if (string.IsNullOrEmpty(col1))
{
result += "第" + (i + 2).ToString() + "行," + "身份证号" + "," + "此项为必填项!" + "|";
}
else
{
if (col1.Length > 50)
result += "第" + (i + 2).ToString() + "行," + "身份证号码" + "," + "[" + col1 + "]错误!" + "|";
if (BLL.SubPackSubPackPersonnelService.GetPersonCountByIdentityCard(col1, this.ProjectId) > 0)
result += "第" + (i + 2).ToString() + "行," + "身份证号码" + "," + "[" + col1 + "]已存在!" + "|";
if (!IDCardValid.CheckIDCard(col1))
result += "第" + (i + 2).ToString() + "行," + "身份证号码" + "," + "[" + col1 + "]非法!" + "|";
if (identityCards.Contains(col1))
result += "第" + (i + 2).ToString() + "行," + "身份证号码,在导入文档中重复出现" + "," + "[" + col1 + "]非法!" + "|";
else
identityCards.Add(col1);
//判断黑名单信息
string allMess = SubPackBlacklistService.GetMessAlert(col1, Const.SubPackBlackListPersonnel);
if (!string.IsNullOrWhiteSpace(allMess))
{
result += "第" + (i + 2).ToString() + "行," + allMess + "|";
}
}
string col2 = pds.Rows[i][2].ToString().Trim();
if (string.IsNullOrEmpty(col2))
{
result += "第" + (i + 2).ToString() + "行," + "施工分包单位" + "," + "此项为必填项!" + "|";
}
else
{
var oneModel = units.FirstOrDefault(p => p.UnitName == col2);
if (oneModel == null)
result += "第" + (i + 2).ToString() + "行," + "施工分包单位" + "," + "不存在请检查!" + "|";
else
unitID = oneModel.UnitId;
}
string col3 = pds.Rows[i][3].ToString().Trim();
if (!string.IsNullOrEmpty(col3))
{
if (!string.IsNullOrWhiteSpace(unitID))
{
var oneModel = branchTeamLists.FirstOrDefault(e => e.SubPackTeamListName == col3 && e.UnitWorkId == unitID);
if (oneModel == null)
result += "第" + (i + 2).ToString() + "行," + "不存在此劳务公司" + "," + "[" + col3 + "]错误!" + "|";
else
branchTeamListId = oneModel.SubPackTeamListDetailID;
}
}
else
{
result += "第" + (i + 2).ToString() + "行," + "劳务公司" + "," + "此项为必填项!" + "|";
}
string col4 = pds.Rows[i][4].ToString().Trim();
if (!string.IsNullOrEmpty(col4))
{
if (!string.IsNullOrWhiteSpace(unitID) && !string.IsNullOrWhiteSpace(branchTeamListId))
{
var oneModel = laborTeams.FirstOrDefault(e => e.LaborTeamName == col4 && e.UnitId == unitID && e.BranchTeamListId == branchTeamListId);
if (oneModel == null)
result += "第" + (i + 2).ToString() + "行," + "不存在此劳务队伍" + "," + "[" + col4 + "]错误!" + "|";
else
branchTeamListId = oneModel.BranchTeamListId;
}
}
else
{
result += "第" + (i + 2).ToString() + "行," + "劳务队伍" + "," + "此项为必填项!" + "|";
}
string col5 = pds.Rows[i][5].ToString().Trim();
if (!string.IsNullOrEmpty(col5))
{
if (!string.IsNullOrWhiteSpace(unitID) && !string.IsNullOrWhiteSpace(branchTeamListId) && !string.IsNullOrWhiteSpace(laborTeamListId))
{
var oneModel = branchTeamListTeams.FirstOrDefault(e => e.BranchTeamListTeamName == col5 && e.UnitId == unitID && e.BranchTeamListId == branchTeamListId && e.LaborTeamId == laborTeamListId);
if (oneModel == null)
result += "第" + (i + 2).ToString() + "行," + "不存在此劳务班组" + "," + "[" + col5 + "]错误!" + "|";
else
teamId = oneModel.BranchTeamListTeamId;
}
}
else
{
result += "第" + (i + 2).ToString() + "行," + "劳务班组" + "," + "此项为必填项!" + "|";
}
}
}
if (!string.IsNullOrEmpty(result))
{
result = result.Substring(0, result.LastIndexOf("|"));
errorInfos = result;
Alert alert = new Alert
{
Message = result,
Target = Target.Self
};
alert.ID = "alertDialg";
alert.CssClass = "scroller111";
alert.Show();
}
else
{
errorInfos = string.Empty;
ShowNotify("审核完成,请点击导入!", MessageBoxIcon.Success);
}
}
else
{
ShowNotify("导入数据为空!", MessageBoxIcon.Warning);
}
return true;
}
#endregion
#endregion
#region
/// <summary>
/// 导入
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnImport_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(errorInfos))
{
if (!string.IsNullOrEmpty(this.hdFileName.Text))
{
string rootPath = Server.MapPath("~/");
ImportXlsToData2(rootPath + initPath + this.hdFileName.Text);
}
else
{
ShowNotify("请先审核要导入的文件!", MessageBoxIcon.Warning);
}
}
else
{
Alert.ShowInTop("请先将错误数据修正,再重新导入保存!", MessageBoxIcon.Warning);
}
}
#region Excel提取数据
/// <summary>
/// 从Excel提取数据--》Dataset
/// </summary>
/// <param name="filename">Excel文件路径名</param>
private void ImportXlsToData2(string fileName)
{
try
{
string oleDBConnString = String.Empty;
oleDBConnString = "Provider=Microsoft.Jet.OLEDB.4.0;";
oleDBConnString += "Data Source=";
oleDBConnString += fileName;
oleDBConnString += ";Extended Properties='Excel 8.0;IMEX=1; 8.0;HDR=1;'";
OleDbConnection oleDBConn = null;
OleDbDataAdapter oleAdMaster = null;
DataTable m_tableName = new DataTable();
DataSet ds = new DataSet();
oleDBConn = new OleDbConnection(oleDBConnString);
oleDBConn.Open();
m_tableName = oleDBConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
if (m_tableName != null && m_tableName.Rows.Count > 0)
{
m_tableName.TableName = m_tableName.Rows[0]["TABLE_NAME"].ToString().Trim();
}
string sqlMaster;
sqlMaster = " SELECT * FROM [" + m_tableName.TableName + "]";
oleAdMaster = new OleDbDataAdapter(sqlMaster, oleDBConn);
oleAdMaster.Fill(ds, "m_tableName");
oleAdMaster.Dispose();
oleDBConn.Close();
oleDBConn.Dispose();
AddDatasetToSQL2(ds.Tables[0], 7);
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region Dataset的数据导入数据库
/// <summary>
/// 将Dataset的数据导入数据库
/// </summary>
/// <param name="pds">数据集</param>
/// <param name="Cols">数据集列数</param>
/// <returns></returns>
private bool AddDatasetToSQL2(DataTable pds, int Cols)
{
int ic, ir;
persons.Clear();
ic = pds.Columns.Count;
if (ic < Cols)
{
Alert.ShowInTop("导入Excel格式错误Excel只有" + ic.ToString().Trim() + "列", MessageBoxIcon.Warning);
}
ir = pds.Rows.Count;
List<Grid_SubPack_SubPackPersonnel> listGrid = new List<Grid_SubPack_SubPackPersonnel>();
if (pds != null && ir > 0)
{
var units = (from x in Funs.DB.Base_Unit
join y in Funs.DB.Project_ProjectUnit on x.UnitId equals y.UnitId
where y.UnitType == "2" && y.ProjectId == this.ProjectId
select x);
var branchTeamLists = from x in Funs.DB.View_SubPack_TeamList where x.ProjectId == this.ProjectId select x;
var laborTeams = from x in Funs.DB.SubPack_LaborTeam where x.ProjectId == this.ProjectId select x;
var branchTeamListTeams = from x in Funs.DB.SubPack_BranchTeamListTeam where x.ProjectId == this.ProjectId select x;
for (int i = 0; i < ir; i++)
{
string col0 = pds.Rows[i][0].ToString().Trim();
if (!string.IsNullOrEmpty(col0))
{
Model.SubPack_SubPackPersonnel person = new Model.SubPack_SubPackPersonnel();
string col1 = pds.Rows[i][1].ToString().Trim();
string col2 = pds.Rows[i][2].ToString().Trim();
string col3 = pds.Rows[i][3].ToString().Trim();
string col4 = pds.Rows[i][4].ToString().Trim();
string col5 = pds.Rows[i][5].ToString().Trim();
string col6 = pds.Rows[i][6].ToString().Trim();
if (!string.IsNullOrEmpty(col0))//姓名
person.PersonName = col0;
if (!string.IsNullOrEmpty(col1))//省份证号
person.IdentityCard = col1;
if (!string.IsNullOrEmpty(col2))//施工分包单位
{
var oneModel = units.FirstOrDefault(p => p.UnitName == col2);
if (oneModel != null)
person.UnitId = oneModel.UnitId;
}
if (!string.IsNullOrEmpty(col3))//劳务公司
{
var oneModel = branchTeamLists.FirstOrDefault(e => e.SubPackTeamListName == col3 && e.UnitWorkId == person.UnitId);
if (oneModel != null)
person.BranchTeamListId = oneModel.SubPackTeamListDetailID;
}
if (!string.IsNullOrEmpty(col4))//劳务队伍
{
var oneModel = laborTeams.FirstOrDefault(e => e.LaborTeamName == col4 && e.UnitId == person.UnitId && e.BranchTeamListId == person.BranchTeamListId);
if (oneModel != null)
person.LaborTeamId = oneModel.LaborTeamId;
}
if (!string.IsNullOrEmpty(col5))//劳务班组
{
var oneModel = branchTeamListTeams.FirstOrDefault(e => e.BranchTeamListTeamName == col5 && e.UnitId == person.UnitId && e.BranchTeamListId == person.BranchTeamListId && e.LaborTeamId == person.LaborTeamId);
if (oneModel != null)
person.BranchTeamListTeamId = oneModel.BranchTeamListTeamId;
}
person.Remark = col6;
person.SubPackPersonnelID = SQLHelper.GetNewID(typeof(Model.Base_SubPackPersonnel));
person.ProjectId = this.ProjectId;
persons.Add(person);
listGrid.Add(new Grid_SubPack_SubPackPersonnel
{
SubPackPersonnelID = person.SubPackPersonnelID,
PersonName = person.PersonName,
IdentityCard = person.IdentityCard,
UnitId = person.UnitId,
BranchTeamListId = person.BranchTeamListId,
LaborTeamId = person.LaborTeamId,
State = person.State,
BranchTeamListTeamId = person.BranchTeamListTeamId,
UnitName = col2,
BranchTeamListName = col3,
LaborTeamName = col4,
BranchTeamListTeamName = col5,
Remark = person.Remark,
});
}
}
if (persons.Count > 0)
{
this.Grid1.Hidden = false;
this.Grid1.DataSource = listGrid;
this.Grid1.DataBind();
}
}
else
{
ShowNotify("导入数据为空!", MessageBoxIcon.Warning);
}
return true;
}
#endregion
#endregion
#region
/// <summary>
/// 保存
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnSave_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(errorInfos))
{
if (persons.Count > 0)
BLL.SubPackSubPackPersonnelService.AddSubPackSubPackPersonnel(persons);
string rootPath = Server.MapPath("~/");
string initFullPath = rootPath + initPath;
string filePath = initFullPath + this.hdFileName.Text;
if (filePath != string.Empty && System.IO.File.Exists(filePath))
{
System.IO.File.Delete(filePath);//删除上传的XLS文件
}
ShowNotify("导入成功!", MessageBoxIcon.Success);
PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
}
else
{
Alert.ShowInTop("请先将错误数据修正,再重新导入保存!", MessageBoxIcon.Warning);
}
}
#endregion
#region
/// <summary>
/// 导出错误提示
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnOut_Click(object sender, EventArgs e)
{
}
/// <summary>
/// 重载VerifyRenderingInServerForm方法否则运行的时候会出现如下错误提示“类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内”
/// </summary>
/// <param name="control"></param>
public override void VerifyRenderingInServerForm(Control control)
{
}
#endregion
#region
/// <summary>
/// 下载模板按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnDownLoad_Click(object sender, EventArgs e)
{
PageContext.RegisterStartupScript(Confirm.GetShowReference("确定下载导入模板吗?", 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.SubPackPersonTemplateUrl;
string filePath = Const.SubPackPersonTemplateUrl;
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
private class Grid_SubPack_SubPackPersonnel
{
public string SubPackPersonnelID { get; set; }
public string PersonName { get; set; }
public string IdentityCard { get; set; }
public string UnitId { get; set; }
public string BranchTeamListId { get; set; }
public string LaborTeamId { get; set; }
public string State { get; set; }
public string BranchTeamListTeamId { get; set; }
public string UnitName { get; set; }
public string BranchTeamListName { get; set; }
public string LaborTeamName { get; set; }
public string BranchTeamListTeamName { get; set; }
public string Remark { get; set; }
}
}
}