Files
N_XLXSBJ----MX/XLBJD_WBXLWLDRInfo.aspx.cs
T
2026-08-21 17:03:02 +08:00

357 lines
17 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 System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using GThinking.N_MISPRO;
using GThinking.N_MISPRO.Data;
using GThinking.N_MODEL.Page;
using GThinking.N_WORKFLOW;
using GThinking.N_MODEL.Dialog;
using GThinking.N_PUBLIC;
using GThinking.N_MISPRO.Utility;
using GThinking.N_CONTROL;
using System.IO;
using System.Data.OleDb;
using System.Data.Common;
using GThinking.N_MISPROAS;
using System.Collections.Generic;
namespace GThinking.N_XLXSBJ
{
public partial class XLBJD_WBXLWLDRInfo : SingleCardBase
{
XLBJD_WBXLWLDREntity entity = new XLBJD_WBXLWLDREntity();
protected void Page_Load(object sender, EventArgs e)
{
this.UMID = 100860073;
this.UMName = "按线缆物料导入";
base.CurMaster = Master;
base.CurEntity = entity;
this.PageHeight = 180;
this.PageWidth = 420;
Master.EnableAttachBtn = false;
Master.EnableCancelBtn = false;
Master.EnableCopyBtn = false;
Master.EnableDeleteBtn = false;
Master.EnableEditBtn = false;
Master.EnableInsertBtn = false;
Master.EnablePrintBtn = false;
Master.EnableRefreshBtn = false;
Master.EnableSaveBtn = false;
Server.ScriptTimeout = 3600;
fupdPost.FileSaveType = gtAsyncFileUpload.DFileSaveType.SaveToPath;
fupdPost.Filter = "XLS,XLSX";
base.InitPage();
}
#region 控件事件
protected void btnQD_Click(object sender, EventArgs e)
{
if (fupdPost.FilePath.Equals(""))
{
ShowMessage("请选择需要导入的文件!");
return;
}
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sSQL = new TSQL(dberp);
string sDRSJ = DateTime.Now.ToString();
//当前报价单ID
string sWBBJDID = "";
string sXLBJDID = PageParam.GetRTrimString("BJDID");
try
{
lblTitle.Text = "正在导入数据,请稍后...";
dberp.BeginTrans();
DataSet aDataExcel = new DataSet();
if (AppRuntime.BitType == AppBitType.Bit32)
aDataExcel = XLBJDUtils.ReadFromExcelFile(fupdPost.FilePath, true, "");
else // AppBitType.Bit64
ReadWJ(fupdPost.FilePath, "", ref aDataExcel);
ExcelColumnValid(aDataExcel);
string sFileName = fupdPost.FileName;
string sSheetName = GetDefaultSheetName(fupdPost.FilePath);
ExcelDRSQL(dberp, sSQL, aDataExcel, sWBBJDID, sXLBJDID, sDRSJ, sFileName, sSheetName);
dberp.CommitTrans();
ShowMessage("导入成功!");
CloseWindow();
DialogOperationScript dos = new DialogOperationScript(this);
dos.ClickOwnerButton(PageParam.GetRTrimString("btnCallBack"));
dos.CloseSelf();
dos.Execute();
}
catch (Exception ex)
{
lblTitle.Text = "";
dberp.RollbackTrans();
ShowMessage(ex.Message);
}
}
protected void btnQX_Click(object sender, EventArgs e)
{
CloseWindow();
}
#endregion
#region 自定义事件
private void ExcelDRSQL(TDatabase dberp, TSQL sSQL, DataSet ds, string sWBBJDID, string sXLBJDID, string sDRSJ, string sFileName, string sSheetName)
{
string sErrMsg = "";
Dictionary<string, string> dicLMMC = new Dictionary<string, string>();
dicLMMC.Clear();
//导入时同步指定“02|计量单位”栏目对应XLWBBJDLM_ZDLMLX为“4|计量单位”、“03|报价数量”栏目对应XLWBBJDLM_ZDLMLX为“5|报价数量”。
dicLMMC.Add("02", "计量单位");
dicLMMC.Add("03", "报价数量");
Dictionary<string, string> dicZDLMLX = new Dictionary<string, string>();
dicZDLMLX.Clear();
//导入时同步指定“02|计量单位”栏目对应XLWBBJDLM_ZDLMLX为“4|计量单位”、“03|报价数量”栏目对应XLWBBJDLM_ZDLMLX为“5|报价数量”。
dicZDLMLX.Add("02", "4");
dicZDLMLX.Add("03", "5");
sWBBJDID = XLWBBJDUtils.GetNewWBBJDID();
#region 生成XLWBBJDML表数据--WBBJDID|外部报价单/BJDID
sSQL.Clear();
sSQL.Add("insert into XLWBBJDML");
sSQL.Add(" (XLWBBJDML_BJDID,XLWBBJDML_WBBJDID,XLWBBJDML_SJLY,XLWBBJDML_WBBJDMC,XLWBBJDML_EXCEL,XLWBBJDML_SHEET, ");
sSQL.Add(" XLWBBJDML_LMHHS,XLWBBJDML_LMHHZ,XLWBBJDML_NRHHS,XLWBBJDML_NRHHZ, ");
sSQL.Add(" XLWBBJDML_DRSJ,XLWBBJDML_YCL, XLWBBJDML_WHR,XLWBBJDML_WHRID,XLWBBJDML_WHSJ ) ");
sSQL.Add(" values ");
sSQL.Add(" ( :pBJDID,:pWBBJDID,'BJWL',:pWBBJDMC,:pEXCEL,:pSHEET, ");
sSQL.Add(" :pLMHHS,:pLMHHZ,:pNRHHS,:pNRHHZ, ");
sSQL.Add(" :pDRSJ, :YCL, :pWHR,:pWHRID,:pWHSJ ) ");
sSQL.ParamByName("pBJDID").Value = sXLBJDID;
sSQL.ParamByName("pWBBJDID").Value = sWBBJDID;
string sMC = sFileName + "【" + sSheetName + "】";
sMC = XLBJDUtils.SubStringFunc(sMC, 100);
string sEXECL = sFileName;
sEXECL = XLBJDUtils.SubStringFunc(sEXECL, 60);
string sSHEET = sSheetName;
sSHEET = XLBJDUtils.SubStringFunc(sSHEET, 40);
sSQL.ParamByName("pWBBJDMC").Value = sMC;
sSQL.ParamByName("pEXCEL").Value = sEXECL;
sSQL.ParamByName("pSHEET").Value = sSheetName;
sSQL.ParamByName("pLMHHS").Value = 1;
sSQL.ParamByName("pLMHHZ").Value = 1;
sSQL.ParamByName("pNRHHS").Value = 1;
sSQL.ParamByName("pNRHHZ").Value = ds.Tables[0].Rows.Count;
sSQL.ParamByName("YCL").Value = "Y";
sSQL.ParamByName("pDRSJ").Value = sDRSJ;
sSQL.ParamByName("pWHR").Value = tSession.UserName;
sSQL.ParamByName("pWHRID").Value = tSession.UserId;
sSQL.ParamByName("pWHSJ").Value = DateTime.Now;
dberp.ExecSQL(sSQL);
#endregion
#region 生成XLWBBJDLM表数据----WBBJDID|外部报价单ID=======LMBH|栏目编号/BJDID
sSQL.Clear();
sSQL.Add("insert into XLWBBJDLM ( ");
sSQL.Add(" XLWBBJDLM_BJDID,XLWBBJDLM_WBBJDID,XLWBBJDLM_LMBH,XLWBBJDLM_LMMC,XLWBBJDLM_ZDLMLX,XLWBBJDLM_WHR,XLWBBJDLM_WHRID,XLWBBJDLM_WHSJ) ");
sSQL.Add("values ( ");
sSQL.Add(" :pBJDID,:pWBBJDID,:pLMBH,:pLMMC,:pZDLMLX,:pWHR,:pWHRID,:pWHSJ) ");
//循环dic
foreach (KeyValuePair<string, string> kvp in dicLMMC)
{
sSQL.ParamByName("pBJDID").Value = sXLBJDID;
sSQL.ParamByName("pWBBJDID").Value = sWBBJDID;
sSQL.ParamByName("pLMBH").Value = kvp.Key;
string sLMMC = kvp.Value;
sLMMC = XLBJDUtils.SubStringFunc(sLMMC, 60);
sSQL.ParamByName("pLMMC").Value = sLMMC;
sSQL.ParamByName("pZDLMLX").Value = dicZDLMLX[kvp.Key];
sSQL.ParamByName("pWHRID").Value = tSession.UserId;
sSQL.ParamByName("pWHR").Value = tSession.UserName;
sSQL.ParamByName("pWHSJ").Value = DateTime.Now;
dberp.ExecSQL(sSQL);
}
#endregion
#region 生成XLWBBJDNR表数据------WBBJDID|外部报价单ID=======DRHH|导入行号/BJDID
sSQL.Clear();
sSQL.Add("insert into XLWBBJDNR(");
sSQL.Add(" XLWBBJDNR_BJDID, XLWBBJDNR_WBBJDID, XLWBBJDNR_DRHH, ");
sSQL.Add(" XLWBBJDNR_LMNR01, XLWBBJDNR_LMNR02, XLWBBJDNR_LMNR03, XLWBBJDNR_LMNR04, XLWBBJDNR_LMNR05, XLWBBJDNR_LMNR06,");
sSQL.Add(" XLWBBJDNR_LMNR07, XLWBBJDNR_LMNR08, XLWBBJDNR_LMNR09, XLWBBJDNR_LMNR10, XLWBBJDNR_LMNR11, XLWBBJDNR_LMNR12,");
sSQL.Add(" XLWBBJDNR_LMNR13, XLWBBJDNR_LMNR14, XLWBBJDNR_LMNR15, XLWBBJDNR_LMNR16, XLWBBJDNR_LMNR17, XLWBBJDNR_LMNR18,");
sSQL.Add(" XLWBBJDNR_LMNR19, XLWBBJDNR_LMNR20, XLWBBJDNR_LMNR21, XLWBBJDNR_LMNR22, XLWBBJDNR_LMNR23, XLWBBJDNR_LMNR24,");
sSQL.Add(" XLWBBJDNR_LMNR25, XLWBBJDNR_LMNR26, XLWBBJDNR_LMNR27, XLWBBJDNR_LMNR28, XLWBBJDNR_LMNR29, XLWBBJDNR_LMNR30,");
sSQL.Add(" XLWBBJDNR_LMNR31, XLWBBJDNR_LMNR32, XLWBBJDNR_LMNR33, XLWBBJDNR_LMNR34, XLWBBJDNR_LMNR35, XLWBBJDNR_LMNR36,");
sSQL.Add(" XLWBBJDNR_LMNR37, XLWBBJDNR_LMNR38, XLWBBJDNR_LMNR39, XLWBBJDNR_LMNR40, XLWBBJDNR_LMNR41, XLWBBJDNR_LMNR42,");
sSQL.Add(" XLWBBJDNR_LMNR43, XLWBBJDNR_LMNR44, XLWBBJDNR_LMNR45, XLWBBJDNR_LMNR46, XLWBBJDNR_LMNR47, XLWBBJDNR_LMNR48,");
sSQL.Add(" XLWBBJDNR_LMNR49, XLWBBJDNR_LMNR50, XLWBBJDNR_LMNR51, XLWBBJDNR_LMNR52, XLWBBJDNR_LMNR53, XLWBBJDNR_LMNR54,");
sSQL.Add(" XLWBBJDNR_LMNR55, XLWBBJDNR_LMNR56, XLWBBJDNR_LMNR57, XLWBBJDNR_LMNR58, XLWBBJDNR_LMNR59, XLWBBJDNR_LMNR60)");
sSQL.Add("values (:XLWBBJDNR_BJDID, :XLWBBJDNR_WBBJDID, :XLWBBJDNR_DRHH, ");
sSQL.Add(" :XLWBBJDNR_LMNR01, :XLWBBJDNR_LMNR02, :XLWBBJDNR_LMNR03, :XLWBBJDNR_LMNR04, :XLWBBJDNR_LMNR05, :XLWBBJDNR_LMNR06,");
sSQL.Add(" :XLWBBJDNR_LMNR07, :XLWBBJDNR_LMNR08, :XLWBBJDNR_LMNR09, :XLWBBJDNR_LMNR10, :XLWBBJDNR_LMNR11, :XLWBBJDNR_LMNR12,");
sSQL.Add(" :XLWBBJDNR_LMNR13, :XLWBBJDNR_LMNR14, :XLWBBJDNR_LMNR15, :XLWBBJDNR_LMNR16, :XLWBBJDNR_LMNR17, :XLWBBJDNR_LMNR18,");
sSQL.Add(" :XLWBBJDNR_LMNR19, :XLWBBJDNR_LMNR20, :XLWBBJDNR_LMNR21, :XLWBBJDNR_LMNR22, :XLWBBJDNR_LMNR23, :XLWBBJDNR_LMNR24,");
sSQL.Add(" :XLWBBJDNR_LMNR25, :XLWBBJDNR_LMNR26, :XLWBBJDNR_LMNR27, :XLWBBJDNR_LMNR28, :XLWBBJDNR_LMNR29, :XLWBBJDNR_LMNR30,");
sSQL.Add(" :XLWBBJDNR_LMNR31, :XLWBBJDNR_LMNR32, :XLWBBJDNR_LMNR33, :XLWBBJDNR_LMNR34, :XLWBBJDNR_LMNR35, :XLWBBJDNR_LMNR36,");
sSQL.Add(" :XLWBBJDNR_LMNR37, :XLWBBJDNR_LMNR38, :XLWBBJDNR_LMNR39, :XLWBBJDNR_LMNR40, :XLWBBJDNR_LMNR41, :XLWBBJDNR_LMNR42,");
sSQL.Add(" :XLWBBJDNR_LMNR43, :XLWBBJDNR_LMNR44, :XLWBBJDNR_LMNR45, :XLWBBJDNR_LMNR46, :XLWBBJDNR_LMNR47, :XLWBBJDNR_LMNR48,");
sSQL.Add(" :XLWBBJDNR_LMNR49, :XLWBBJDNR_LMNR50, :XLWBBJDNR_LMNR51, :XLWBBJDNR_LMNR52, :XLWBBJDNR_LMNR53, :XLWBBJDNR_LMNR54,");
sSQL.Add(" :XLWBBJDNR_LMNR55, :XLWBBJDNR_LMNR56, :XLWBBJDNR_LMNR57, :XLWBBJDNR_LMNR58, :XLWBBJDNR_LMNR59, :XLWBBJDNR_LMNR60)");
//循环ds
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
sSQL.ParamByName("XLWBBJDNR_BJDID").Value = sXLBJDID;
sSQL.ParamByName("XLWBBJDNR_WBBJDID").Value = sWBBJDID;
sSQL.ParamByName("XLWBBJDNR_DRHH").Value = i + 1;
for (int j = 1; j <= 60; j++)
{
if (j <= ds.Tables[0].Columns.Count)
{
string sLMNR = ds.Tables[0].Rows[i][j - 1].ToString().Trim();
sLMNR = sLMNR.Replace("\n", " ").Replace("\r", " ");
if (j <= 12)
sLMNR = XLBJDUtils.SubStringFunc(sLMNR, 250);
else
sLMNR = XLBJDUtils.SubStringFunc(sLMNR, 60);
sSQL.ParamByName("XLWBBJDNR_LMNR" + j.ToString().Trim().PadLeft(2, '0')).Value = sLMNR;
}
else
{
sSQL.ParamByName("XLWBBJDNR_LMNR" + j.ToString().Trim().PadLeft(2, '0')).Value = null;
}
}
dberp.ExecSQL(sSQL);
}
#endregion 完成XLWBBJDMX导入
#region 生成XLWBBJDMX记录
XLWBBJDUtils.InsXLWBBJDMX(dberp, sSQL, sWBBJDID, sXLBJDID, tSession, ref sErrMsg);
if (!sErrMsg.Equals(""))
{
throw new Exception(sErrMsg);
}
//A|× B|*
//string sXLJGU007 = GetOption(102579000, "XLJGU007");
//sSQL.Clear();
//sSQL.Add("insert into XLWBBJDMX(XLWBBJDMX_WBBJDID,XLWBBJDMX_DRHH,XLWBBJDMX_BJDID, ");
//sSQL.Add(" XLWBBJDMX_WLID,XLWBBJDMX_XLXHID,XLWBBJDMX_XLGGID, ");
//sSQL.Add(" XLWBBJDMX_XLBZID,XLWBBJDMX_DYDJID,XLWBBJDMX_XLYSID, ");
//sSQL.Add(" XLWBBJDMX_JLDW,XLWBBJDMX_BJSL,XLWBBJDMX_WHR,XLWBBJDMX_WHRID,XLWBBJDMX_WHSJ)");
//sSQL.Add("select XLWBBJDNR_WBBJDID,XLWBBJDNR_DRHH,XLWBBJDNR_BJDID, ");
//sSQL.Add(" XLWBBJDNR_LMNR01,XLXLB_XLXHID, ");
////A|× B|*
//if (sXLJGU007.Equals("B"))
//{
// sSQL.Add(" replace( XLXLB_XLGGID,'×','*') as XLGGID, ");
//}
//else
//{
// sSQL.Add(" replace( XLXLB_XLGGID,'*','×') as XLGGID, ");
//}
//sSQL.Add(" XLXLB_XLBZID,XLXLB_DYDJID,XLXLB_XLYSID, ");
//sSQL.Add(" XLWBBJDNR_LMNR02,XLWBBJDNR_LMNR03,:pWHR,:pWHRID,:pWHSJ ");
//sSQL.Add("from XLWBBJDNR ");
//sSQL.Add(" left join XLXLB on XLXLB_WLID=XLWBBJDNR_LMNR01 ");
//sSQL.Add(" where XLWBBJDNR_WBBJDID=:pWBBJDID ");
//sSQL.Add(" and XLWBBJDNR_BJDID=:pBJDID ");
//sSQL.Add(" and not exists(select 1 from XLWBBJDMX where XLWBBJDMX_WBBJDID=XLWBBJDNR_WBBJDID and XLWBBJDMX_BJDID=XLWBBJDNR_BJDID and XLWBBJDMX_DRHH=XLWBBJDNR_DRHH) ");
//sSQL.ParamByName("pWBBJDID").Value = sWBBJDID;
//sSQL.ParamByName("pBJDID").Value = sXLBJDID;
//sSQL.ParamByName("pWHR").Value = tSession.UserName;
//sSQL.ParamByName("pWHRID").Value = tSession.UserId;
//sSQL.ParamByName("pWHSJ").Value = DateTime.Now;
//dberp.ExecSQL(sSQL);
#endregion
}
private void ExcelColumnValid(DataSet ds)
{
Dictionary<string, string> ColumnNames = new Dictionary<string, string>();
ColumnNames.Add("0", "物料编码");
ColumnNames.Add("1", "计量单位");
ColumnNames.Add("2", "报价数量");
for (int i = 0; i < ColumnNames.Count; i++)
{
if (!ds.Tables[0].Columns[i].ColumnName.Trim().Equals(ColumnNames[i.ToString()].Trim()))
{
throw new Exception("导入文件的内容格式不正确,Excel栏目依次为:物料编码,计量单位,报价数量!");
}
}
}
private void ReadWJ(string sPath, string sSheetName, ref DataSet aDataExcel)
{
string sMessage = "";
aDataExcel = TExcelData.ReadExcel(sPath.Trim(), sSheetName, "", false, false, ref sMessage);
if (!sMessage.Trim().Equals(""))
{
throw new Exception("文件读取失败!失败原因:" + sMessage.Trim());
}
}
private string sGetCellTest(DataRow Row, int ColumnIndex)
{
return Row[ColumnIndex].ToString().Trim().Replace("\r\n", "").Replace("\n", "");
}
//取得默认的sheet名称
private string GetDefaultSheetName(string sFilePath)
{
string connStr = GetConnString(sFilePath);
OleDbConnection m_conn = new OleDbConnection(connStr);
m_conn.Open();
DataTable sheetNames = m_conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
string sSheetName = "";
if (sheetNames.Rows[0].Table.Rows.Count > 0)
{
sSheetName = sheetNames.Rows[0].Table.Rows[0]["TABLE_NAME"].ToString().Trim();
if (sSheetName.StartsWith("'") && sSheetName.EndsWith("'"))
sSheetName = sSheetName.TrimStart('\'').TrimEnd('\'');
if (sSheetName.EndsWith("$"))
sSheetName = sSheetName.TrimEnd('$');
}
if (m_conn.State == ConnectionState.Open)
{
m_conn.Dispose();
m_conn = null;
}
return sSheetName;
}
// 根据32/64位运行时返回不同的连接字符串。
private string GetConnString(string sPath)
{
string conn;
if (AppRuntime.BitType == AppBitType.Bit32)
{
conn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + sPath + ";" + "Extended Properties=Excel 8.0;";
//conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sPath + @";Extended Properties=""Excel 8.0;IMEX=1;ImportMixedTypes=Text""";
}
else // AppBitType.Bit64
{
conn = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + sPath + ";" + "Extended Properties=Excel 8.0;";
}
return conn;
}
#endregion
}
}