217 lines
9.2 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|