CNCEC_SUBQHSE_WUHUAN/SGGL/FineUIPro.Web/CQMS/Comprehensive/DataReceivingDocDataIn.aspx.cs

626 lines
25 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 Model;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.IO;
using System.Linq;
using System.Threading;
namespace FineUIPro.Web.CQMS.Comprehensive
{
public partial class DataReceivingDocDataIn : PageBase
{
#region
/// <summary>
/// 上传预设的虚拟路径
/// </summary>
private string initPath = Const.ExcelUrl;
/// <summary>
/// 错误集合
/// </summary>
public static List<Model.ErrorInfo> errorInfos = new List<Model.ErrorInfo>();
#endregion
#region
/// <summary>
/// 加载页面
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.hdCheckResult.Text = string.Empty;
this.hdFileName.Text = string.Empty;
if (errorInfos != null)
{
errorInfos.Clear();
}
}
}
#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 (errorInfos != null)
{
errorInfos.Clear();
}
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;";
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], 20);
hdCheckResult.Text = "1";
}
catch (Exception exc)
{
Response.Write(exc);
//return null;
// return dt;
}
finally
{
}
}
#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)
{
ShowNotify("导入Excel格式错误Excel只有" + ic.ToString().Trim() + "列", MessageBoxIcon.Warning);
return false;
}
ir = pds.Rows.Count;
if (pds != null && ir > 0)
{
var oldViewInfos = from x in Funs.DB.Comprehensive_DataReceivingDoc
where x.ProjectId == this.CurrUser.LoginProjectId
select x;
var units = from x in Funs.DB.Base_Unit
join y in Funs.DB.Project_ProjectUnit on x.UnitId equals y.UnitId
where y.ProjectId == this.CurrUser.LoginProjectId
select x;
var cns = from x in Funs.DB.Base_CNProfessional select x;
for (int i = 2; i < ir; i++)
{
string row0 = pds.Rows[i][0].ToString();
if (string.IsNullOrEmpty(row0))
{
result += (i + 2).ToString() + "," + "日期" + "," + "此项为必填项!" + "|";
}
else
{
try
{
DateTime d = Convert.ToDateTime(row0);
}
catch (Exception)
{
result += (i + 2).ToString() + "," + "日期" + "," + "错误!" + "|";
}
}
string row1 = pds.Rows[i][1].ToString();
if (string.IsNullOrEmpty(row1))
{
result += (i + 2).ToString() + "," + "文件号" + "," + "此项为必填项!" + "|";
}
string row2 = pds.Rows[i][2].ToString();
if (string.IsNullOrEmpty(row2))
{
result += (i + 2).ToString() + "," + "文件名称" + "," + "此项为必填项!" + "|";
}
string row3 = pds.Rows[i][3].ToString();
if (string.IsNullOrEmpty(row3))
{
result += (i + 2).ToString() + "," + "文件类别" + "," + "此项为必填项!" + "|";
}
string row4 = pds.Rows[i][4].ToString().Trim();
if (string.IsNullOrEmpty(row4))
{
result += (i + 2).ToString() + "," + "专业" + "," + "此项为必填项!" + "|";
}
else
{
var u = cns.Where(x => x.ProfessionalName == row4).FirstOrDefault();
if (u == null)
{
result += (i + 2).ToString() + "," + "专业" + "," + "[" + row4 + "]不存在!" + "|";
}
}
string row5 = pds.Rows[i][5].ToString().Trim();
if (string.IsNullOrEmpty(row5))
{
result += (i + 2).ToString() + "," + "发件单位" + "," + "此项为必填项!" + "|";
}
else
{
var u = units.Where(x => x.UnitName == row5).FirstOrDefault();
if (u == null)
{
result += (i + 2).ToString() + "," + "发件单位" + "," + "[" + row5 + "]不存在!" + "|";
}
}
string row6 = pds.Rows[i][6].ToString().Trim();
if (string.IsNullOrEmpty(row6))
{
result += (i + 2).ToString() + "," + "发件人" + "," + "此项为必填项!" + "|";
}
string row7 = pds.Rows[i][7].ToString().Trim();
if (string.IsNullOrEmpty(row7))
{
result += (i + 2).ToString() + "," + "份数" + "," + "此项为必填项!" + "|";
}
else
{
try
{
int f = Convert.ToInt32(row7);
}
catch (Exception)
{
result += (i + 2).ToString() + "," + "份数" + "," + "格式错误!" + "|";
}
}
string row9 = pds.Rows[i][9].ToString();
if (string.IsNullOrEmpty(row9))
{
result += (i + 2).ToString() + "," + "上报日期" + "," + "此项为必填项!" + "|";
}
else
{
try
{
DateTime d = Convert.ToDateTime(row9);
}
catch (Exception)
{
result += (i + 2).ToString() + "," + "上报日期" + "," + "格式错误!" + "|";
}
}
string row10 = pds.Rows[i][10].ToString().Trim();
if (!string.IsNullOrEmpty(row10))
{
string[] reunit = row10.Split(',');
foreach (string u in reunit)
{
var unit = units.Where(x => x.UnitName == u.Trim()).FirstOrDefault();
if (unit == null)
{
result += (i + 2).ToString() + "," + "上报接收单位" + "," + "[" + u.Trim() + "]不存在!" + "|";
}
}
}
string row12 = pds.Rows[i][12].ToString().Trim();
if (!string.IsNullOrEmpty(row12))
{
if (row12 != "是" && row12 != "否")
{
result += (i + 2).ToString() + "," + "是否需回复" + "," + "错误!" + "|";
}
}
string row13 = pds.Rows[i][13].ToString().Trim();
if (!string.IsNullOrEmpty(row13))
{
try
{
DateTime d = Convert.ToDateTime(row0);
}
catch (Exception)
{
result += (i + 2).ToString() + "," + "返回五环日期" + "," + "格式错误!" + "|";
}
}
string row14 = pds.Rows[i][14].ToString().Trim();
if (!string.IsNullOrEmpty(row14))
{
try
{
int d = Convert.ToInt32(row14);
}
catch (Exception)
{
result += (i + 2).ToString() + "," + "返回五环份数" + "," + "格式错误!" + "|";
}
}
string row15 = pds.Rows[i][15].ToString().Trim();
if (!string.IsNullOrEmpty(row15))
{
string[] reunit = row15.Split(',');
foreach (string unit in reunit)
{
var u = units.Where(x => x.UnitName == unit.Trim()).FirstOrDefault();
if (u == null)
{
result += (i + 2).ToString() + "," + "下发至单位" + "," + "[" + unit.Trim() + "]不存在!" + "|";
}
}
}
string row16 = pds.Rows[i][16].ToString().Trim();
if (!string.IsNullOrEmpty(row16))
{
try
{
int d = Convert.ToInt32(row16);
}
catch (Exception)
{
result += (i + 2).ToString() + "," + "下发份数" + "," + "格式错误!" + "|";
}
}
string row18 = pds.Rows[i][18].ToString().Trim();
if (!string.IsNullOrEmpty(row18))
{
if (row18 != "是" && row18 != "否")
{
result += (i + 2).ToString() + "," + "是否存档" + "," + "[" + row18 + "]错误!" + "|";
}
}
string row19 = pds.Rows[i][19].ToString();
if (string.IsNullOrEmpty(row19))
{
result += (i + 2).ToString() + "," + "标志编号" + "," + "此项为必填项!" + "|";
}
}
if (!string.IsNullOrEmpty(result))
{
result = result.Substring(0, result.LastIndexOf("|"));
}
errorInfos.Clear();
if (!string.IsNullOrEmpty(result))
{
string results = result;
List<string> errorInfoList = results.Split('|').ToList();
foreach (var item in errorInfoList)
{
string[] errors = item.Split(',');
Model.ErrorInfo errorInfo = new Model.ErrorInfo();
errorInfo.Row = errors[0];
errorInfo.Column = errors[1];
errorInfo.Reason = errors[2];
errorInfos.Add(errorInfo);
}
if (errorInfos.Count > 0)
{
this.gvErrorInfo.DataSource = errorInfos;
this.gvErrorInfo.DataBind();
}
}
else
{
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(hdCheckResult.Text))
{
if (errorInfos.Count <= 0)
{
string rootPath = Server.MapPath("~/");
ImportXlsToData2(rootPath + initPath + this.hdFileName.Text);
hdCheckResult.Text = string.Empty;
ShowNotify("导入成功!", MessageBoxIcon.Success);
PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
}
else
{
ShowNotify("请先将错误数据修正,再重新导入提交!", MessageBoxIcon.Warning);
}
}
else
{
ShowNotify("请先审核要导入的文件!", 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;";
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], 20);
}
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;
ic = pds.Columns.Count;
if (ic < Cols)
{
ShowNotify("导入Excel格式错误Excel只有" + ic.ToString().Trim() + "列", MessageBoxIcon.Warning);
}
string result = string.Empty;
ir = pds.Rows.Count;
if (pds != null && ir > 0)
{
var oldViewInfos = from x in Funs.DB.Comprehensive_DataReceivingDoc
where x.ProjectId == this.CurrUser.LoginProjectId
select x;
var units = from x in Funs.DB.Base_Unit
join y in Funs.DB.Project_ProjectUnit on x.UnitId equals y.UnitId
where y.ProjectId == this.CurrUser.LoginProjectId
select x;
var cns = from x in Funs.DB.Base_CNProfessional select x;
for (int i = 2; i < ir; i++)
{
Model.Comprehensive_DataReceivingDoc oldViewInfo = new Model.Comprehensive_DataReceivingDoc();
var cn = cns.Where(y => y.ProfessionalName == pds.Rows[i][4].ToString().Trim()).FirstOrDefault();
var unit = units.Where(y => y.UnitName == pds.Rows[i][5].ToString().Trim()).FirstOrDefault();
oldViewInfo = oldViewInfos.Where(x => x.RemarkCode == pds.Rows[i][19].ToString().Trim()
).FirstOrDefault();
if (oldViewInfo == null)
{
Model.Comprehensive_DataReceivingDoc des = new Model.Comprehensive_DataReceivingDoc();
des.DataReceivingDocId = SQLHelper.GetNewID(typeof(Model.Comprehensive_DataReceivingDoc));
des.ProjectId = this.CurrUser.LoginProjectId;
des.ReceiveDate = Funs.GetNewDateTime(pds.Rows[i][0].ToString().Trim());
des.FileCode = pds.Rows[i][1].ToString().Trim();
des.FileName= pds.Rows[i][2].ToString().Trim();
des.FileType= pds.Rows[i][3].ToString().Trim();
des.CNProfessionalId = cn.CNProfessionalId;
des.SendUnit = unit.UnitId;
des.SendMan= pds.Rows[i][6].ToString().Trim();
des.Copies = Funs.GetNewInt(pds.Rows[i][7].ToString().Trim());
des.DocumentHandler = pds.Rows[i][8].ToString().Trim();
des.SendDate = Funs.GetNewDateTime(pds.Rows[i][9].ToString().Trim());
if (!string.IsNullOrEmpty(pds.Rows[i][10].ToString().Trim()))
{
des.ReceiveUnit = BLL.UnitService.GetUnitIds(pds.Rows[i][10].ToString().Trim());
}
des.ReceiveMan = pds.Rows[i][11].ToString().Trim();
if (!string.IsNullOrEmpty(pds.Rows[i][12].ToString().Trim()))
{
if (pds.Rows[i][12].ToString().Trim() == "是")
{
des.IsReply = true;
}
else
{
des.IsReply = false;
}
}
des.ReturnWuhuangDate = Funs.GetNewDateTime(pds.Rows[i][13].ToString().Trim());
des.RetrunWuhuangCopies = Funs.GetNewInt(pds.Rows[i][14].ToString().Trim());
if (!string.IsNullOrEmpty(pds.Rows[i][15].ToString().Trim()))
{
des.IssueToUnit = BLL.UnitService.GetUnitIds(pds.Rows[i][15].ToString().Trim());
}
des.IssueCopies = Funs.GetNewInt(pds.Rows[i][16].ToString().Trim());
des.IssueUnitReceiver = pds.Rows[i][17].ToString().Trim();
if (!string.IsNullOrEmpty(pds.Rows[i][18].ToString().Trim()))
{
if (pds.Rows[i][18].ToString().Trim() == "是")
{
des.IsOnFile = true;
}
else if (pds.Rows[i][18].ToString().Trim() == "否")
{
des.IsOnFile = false;
}
}
des.RemarkCode = pds.Rows[i][19].ToString().Trim();
des.CompileMan = this.CurrUser.UserId;
des.CompileDate = DateTime.Now;
BLL.DataReceivingDocService.AddDataReceivingDoc(des);
}
}
}
else
{
ShowNotify("导入数据为空!", MessageBoxIcon.Warning);
}
return true;
}
#endregion
#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.CQMS_DataReceivingDocTempUrl;
string filePath = Const.CQMS_DataReceivingDocTempUrl;
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
}
}