Files
U20261363_N_XLXSBJ/XLBJD_WBBJDMX_MRDYWHDRInfo.aspx.cs
T
2026-10-13 03:41:34 +08:00

217 lines
9.2 KiB
C#

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
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 System.Data.Common;
using GThinking.N_MODEL.Dialog;
using GThinking.N_PUBLIC;
using GThinking.N_PUBLIC2;
using GThinking.N_MISPRO.Utility;
using System.IO;
using System.Text;
using GThinking.N_CONTROL;
using System.Data.OleDb;
using GThinking.N_MISPRO.MISPROAS;
namespace GThinking.U20261363_N_XLXSBJ
{
public partial class XLBJD_WBBJDMX_MRDYWHDRInfo : SingleCardBase
{
XLBJD_WBBJDMX_MRDYWHDR entity = new XLBJD_WBBJDMX_MRDYWHDR();
protected void Page_Load(object sender, EventArgs e)
{
this.UMID = 100860174;
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;
fupdPost.FileSaveType = gtAsyncFileUpload.DFileSaveType.SaveToPath;
fupdPost.Filter = "XLS";
base.InitPage();
}
protected void btnQD_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(fupdPost.FilePath.Trim()) || fupdPost.FilePath.Trim().EndsWith("\\"))
{
ShowMessage("请选择需要导入的文件!");
return;
}
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sSQL = new TSQL(dberp);
try
{
lblTitle.Text = "正在导入数据,请稍后...";
dberp.BeginTrans();
string sPath = fupdPost.FilePath;
string sColumns = "型号,主芯截面始,主芯截面止,电压等级";
string sMessage = "";
DataSet aDataExcel = TExcelData.ReadExcel(sPath.Trim(), "sheet1", sColumns, false, ref sMessage);
if (!sMessage.Trim().Equals(""))
{
throw new Exception("导入文件的内容格式不正确,请按帮助文档中要求的内容格式调整导入文件!");
}
//记录本次导入文件中已存在的型号截面范围,用于校验文件内部的范围交集
Dictionary<string, List<double[]>> dicImported = new Dictionary<string, List<double[]>>();
for (int i = 0; i < aDataExcel.Tables[0].Rows.Count; i++)
{
string sXLXHID = aDataExcel.Tables[0].Rows[i][0].ToString().Trim();
string sZXJMS = aDataExcel.Tables[0].Rows[i][1].ToString().Trim();
string sZXJMZ = aDataExcel.Tables[0].Rows[i][2].ToString().Trim();
string sDYDJID = aDataExcel.Tables[0].Rows[i][3].ToString().Trim();
int iXLSRow = i + 2;//excel中的行号(含标题行)
if (sXLXHID.Equals(""))
{
string ErrorMessage = "第" + iXLSRow + "行型号不允许为空!";
throw new Exception(ErrorMessage);
}
double dZXJMS = 0;
double dZXJMZ = 0;
if (!double.TryParse(sZXJMS, out dZXJMS))
{
throw new Exception("第" + iXLSRow + "行主芯截面始[" + sZXJMS + "]不是合法的数字!");
}
if (!double.TryParse(sZXJMZ, out dZXJMZ))
{
throw new Exception("第" + iXLSRow + "行主芯截面止[" + sZXJMZ + "]不是合法的数字!");
}
if (dZXJMZ < 0)
{
throw new Exception("第" + iXLSRow + "行主芯截面止不允许为负数!");
}
if (dZXJMS < 0)
{
throw new Exception("第" + iXLSRow + "行主芯截面始不允许为负数!");
}
if (dZXJMS > dZXJMZ)
{
throw new Exception("第" + iXLSRow + "行主芯截面始不允许大于主芯截面止!");
}
//与本次导入文件中已出现的范围校验交集
if (dicImported.ContainsKey(sXLXHID))
{
bool bSame = false;
bool bOverLap = false;
double dExistS = 0;
double dExistZ = 0;
foreach (double[] dRange in dicImported[sXLXHID])
{
if (dRange[0] == dZXJMS && dRange[1] == dZXJMZ)
{
bSame = true;
break;
}
if (!(dRange[1] < dZXJMS || dRange[0] > dZXJMZ))
{
bOverLap = true;
dExistS = dRange[0];
dExistZ = dRange[1];
break;
}
}
if (bSame)
continue;
if (bOverLap)
{
throw new Exception("第" + iXLSRow + "行型号[" + sXLXHID + "]与文件中的主芯截面范围[" + dExistS + "~" + dExistZ + "]存在交集,相同型号的主芯截面范围不允许有交集!");
}
}
string sSql = string.Format(@"select top 1 XLXHID from MRDYWH
where XLXHID='{0}' and ZXJMS={1} and ZXJMZ={2} ",
sXLXHID.Replace("'", "''"), dZXJMS, dZXJMZ);
if (!CMISproDataBase.ExistsRecord("DBERP", sSql))
{
//校验相同型号的主芯截面范围没有交集
string sJJSJl = string.Format(@"select top 1 ZXJMS,ZXJMZ from MRDYWH
where XLXHID='{0}' and not (ZXJMZ < {1} or ZXJMS > {2}) ",
sXLXHID.Replace("'", "''"), dZXJMS, dZXJMZ);
TSQL sSQLJJSJ = new TSQL(dberp);
sSQLJJSJ.Clear();
sSQLJJSJ.Add(sJJSJl);
DataSet dsJJSJ = dberp.OpenDataSet(sSQLJJSJ);
if (dsJJSJ.Tables[0].Rows.Count > 0)
{
throw new Exception("第" + iXLSRow + "行型号[" + sXLXHID + "]与系统中的主芯截面范围["
+ dsJJSJ.Tables[0].Rows[0]["ZXJMS"].ToString().Trim() + "~"
+ dsJJSJ.Tables[0].Rows[0]["ZXJMZ"].ToString().Trim() + "]存在交集,相同型号的主芯截面范围不允许有交集!");
}
sSQL.Clear();
sSQL.Add("insert into MRDYWH(XLXHID, ZXJMS, ZXJMZ, DYDJID)");
sSQL.Add(" values(:XLXHID, :ZXJMS, :ZXJMZ, isnull(:DYDJID,' '))");
sSQL.ParamByName("XLXHID").Value = sXLXHID;
sSQL.ParamByName("ZXJMS").Value = dZXJMS;
sSQL.ParamByName("ZXJMZ").Value = dZXJMZ;
sSQL.ParamByName("DYDJID").Value = sDYDJID;
dberp.ExecSQL(sSQL);
if (!dicImported.ContainsKey(sXLXHID))
dicImported.Add(sXLXHID, new List<double[]>());
dicImported[sXLXHID].Add(new double[] { dZXJMS, dZXJMZ });
}
else
{
continue;
}
}
dberp.CommitTrans();
ShowMessage("导入成功!");
DialogOperationScript dos = new DialogOperationScript(this);
dos.ClickOwnerButton(PageParam.GetRTrimString("ClientExportFileURL"));
dos.CloseSelf();
dos.Execute();
}
catch (Exception ex)
{
lblTitle.Text = "";
dberp.RollbackTrans();
ShowMessage("导入失败,错误信息:" + ex.Message);
return;
}
finally
{
System.IO.File.Delete(fupdPost.FilePath.Trim());
}
CloseWindowNoQuery();
}
protected void btnQX_Click(object sender, EventArgs e)
{
CloseWindowNoQuery();
}
}
}