This commit is contained in:
2026-08-21 17:03:02 +08:00
commit f065129b20
2292 changed files with 666241 additions and 0 deletions
+356
View File
@@ -0,0 +1,356 @@
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
}
}