228 lines
8.1 KiB
C#
228 lines
8.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
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_PUBLIC2;
|
|
using GThinking.N_MISPRO.Utility;
|
|
using GThinking.N_CONTROL;
|
|
using System.IO;
|
|
using System.Data.OleDb;
|
|
using System.Data.Common;
|
|
using GThinking.N_MISPRO.Caching;
|
|
using GThinking.N_MISPRO.TableCache;
|
|
using GThinking.N_MISPROAS;
|
|
|
|
namespace GThinking.N_XLXSBJ
|
|
{
|
|
[TableMap(DB = "DBERP", DbTableName = "XLXHB", Umid = 100860167, IsWorkFlow = false, UseWhr = false)]
|
|
public class XLXHCPTXWH_DR : EntityManager
|
|
{
|
|
}
|
|
|
|
public partial class DRXLXHCPTXWH : SingleCardBase
|
|
{
|
|
XLXHCPTXWH_DR entity = new XLXHCPTXWH_DR();
|
|
public static Dictionary<string, string> dict = new Dictionary<string, string>();
|
|
protected void Page_Load(object sender, EventArgs e)
|
|
{
|
|
this.UMID = 100860166;
|
|
this.UMName = "线缆型号附加属性维护";
|
|
base.CurMaster = Master;
|
|
this.CurEntity = entity;
|
|
this.PageHeight = 180;
|
|
this.PageWidth = 420;
|
|
|
|
this.Master.EnableAttachBtn = false;
|
|
this.Master.EnableCancelBtn = false;
|
|
this.Master.EnableCopyBtn = false;
|
|
this.Master.EnableDeleteBtn = false;
|
|
this.Master.EnableEditBtn = false;
|
|
this.Master.EnableInsertBtn = false;
|
|
this.Master.EnablePrintBtn = false;
|
|
this.Master.EnableRefreshBtn = false;
|
|
this.Master.EnableSaveBtn = false;
|
|
Server.ScriptTimeout = 3600;
|
|
fupdPost.FileSaveType = gtAsyncFileUpload.DFileSaveType.SaveToPath;
|
|
if (AppRuntime.BitType == AppBitType.Bit32)
|
|
fupdPost.Filter = "XLS";
|
|
else // AppBitType.Bit64
|
|
fupdPost.Filter = "XLS,XLSX";
|
|
base.InitPage();
|
|
Server.ScriptTimeout = 3600;
|
|
btnUn.Style["display"] = "none";
|
|
}
|
|
#region 控件事件
|
|
|
|
protected void btnQX_Click(object sender, EventArgs e)
|
|
{
|
|
CloseWindowNoQuery();
|
|
}
|
|
|
|
protected void btnUnDis_Click(object sender, EventArgs e)
|
|
{
|
|
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
|
|
TSQL sSQL = new TSQL(dberp);
|
|
try
|
|
{
|
|
lblTitle.Text = "正在导入数据,请稍后...";
|
|
dberp.BeginTrans();
|
|
DataSet aDataExcel = new DataSet();
|
|
if (AppRuntime.BitType == AppBitType.Bit32)
|
|
{
|
|
aDataExcel = XLBJDUtils.ReadFromExcelFile(fupdPost.FilePath, 0, "");
|
|
}
|
|
else // AppBitType.Bit64
|
|
{
|
|
ReadWJ(fupdPost.FilePath, ref aDataExcel);
|
|
}
|
|
Mac.MacLog.TraceFormat("1-DR");
|
|
ExcelColumnValid(aDataExcel);
|
|
Mac.MacLog.TraceFormat("2-DR");
|
|
InsertDRJL(dberp, sSQL, aDataExcel);
|
|
Mac.MacLog.TraceFormat("3-DR");
|
|
dberp.CommitTrans();
|
|
ShowMessage("导入成功!");
|
|
|
|
DialogOperationScript dos = new DialogOperationScript(this);
|
|
dos.ClickOwnerButton(PageParam.GetRTrimString("btnRefreshCID"));
|
|
dos.CloseSelf();
|
|
dos.Execute();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
lblTitle.Text = "";
|
|
dberp.RollbackTrans();
|
|
ShowMessage(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
System.IO.File.Delete(fupdPost.FilePath.Trim());
|
|
}
|
|
CloseWindowNoQuery();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 自定义函数
|
|
|
|
private void InsertDRJL(TDatabase dberp, TSQL SQL, DataSet ds)
|
|
{
|
|
int iImportedCount = 0;
|
|
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
|
|
{
|
|
string sXLXHID = ds.Tables[0].Rows[i][0].ToString().Trim();
|
|
string sDYDJID = ds.Tables[0].Rows[i][1].ToString().Trim();
|
|
|
|
#region 校验数据
|
|
|
|
if (sXLXHID.Equals(""))
|
|
{
|
|
string sDRXXMessage = "导入失败!第" + (i + 2).ToString() + "行型号不能为空!";
|
|
throw new Exception(sDRXXMessage);
|
|
}
|
|
if (sDYDJID.Equals(""))
|
|
sDYDJID = " ";
|
|
|
|
#endregion
|
|
|
|
string sSQL = string.Format("delete from XLXSBJCPYS where XLXSBJCPYS_XLJBXHID='{0}' and XLXSBJCPYS_DYDJID='{1}'", sXLXHID, sDYDJID);
|
|
|
|
SQL.Clear();
|
|
SQL.Add(sSQL);
|
|
dberp.ExecSQL(SQL);
|
|
|
|
|
|
#region 按矩阵列生成属性记录
|
|
string sXLTXID = string.Empty;
|
|
for (int j = 2; j < ds.Tables[0].Columns.Count; j++)
|
|
{
|
|
object objValue = ds.Tables[0].Rows[i][j];
|
|
if (objValue == null || objValue == DBNull.Value)
|
|
continue;
|
|
|
|
string sXLXHFJSX = ds.Tables[0].Columns[j].ColumnName.Trim();
|
|
string sCellValue = objValue.ToString().Trim();
|
|
|
|
if (sXLXHFJSX.Equals(""))
|
|
continue;
|
|
|
|
if (sCellValue.Equals(""))
|
|
continue;
|
|
|
|
int XH = 1;
|
|
SQL.Clear();
|
|
SQL.Add(@" insert into XLXSBJCPYS(XLXSBJCPYS_CPYT, XLXSBJCPYS_XLJBXHID, XLXSBJCPYS_DYDJID,XLXSBJCPYS_XXJGID,XLXSBJCPYS_WHR,XLXSBJCPYS_WHRID,XLXSBJCPYS_WHSJ)
|
|
values(:XLXSBJCPYS_CPYT,:XLXSBJCPYS_XLJBXHID,:XLXSBJCPYS_DYDJID,:XLXSBJCPYS_XXJGID,:XLXSBJCPYS_WHR,:XLXSBJCPYS_WHRID,:XLXSBJCPYS_WHSJ)");
|
|
SQL.ParamByName("XLXSBJCPYS_XLJBXHID").Value = sXLXHID;
|
|
SQL.ParamByName("XLXSBJCPYS_DYDJID").Value = sDYDJID;
|
|
SQL.ParamByName("XLXSBJCPYS_XXJGID").Value = sXLXHFJSX;
|
|
SQL.ParamByName("XLXSBJCPYS_CPYT").Value = XH++;
|
|
SQL.ParamByName("XLXSBJCPYS_WHR").Value = tSession.UserName;
|
|
SQL.ParamByName("XLXSBJCPYS_WHRID").Value = tSession.UserId;
|
|
SQL.ParamByName("XLXSBJCPYS_WHSJ").Value = DateTime.Now;
|
|
dberp.ExecSQL(SQL);
|
|
|
|
|
|
iImportedCount++;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
}
|
|
|
|
if (iImportedCount == 0)
|
|
{
|
|
throw new Exception("导入失败!Excel 中未找到有效的属性标记记录!");
|
|
}
|
|
}
|
|
|
|
private void ExcelColumnValid(DataSet ds)
|
|
{
|
|
if (ds.Tables[0].Columns.Count < 3)
|
|
{
|
|
throw new Exception("Excel 列数不正确,至少需要包含“型号”、“电压等级”列和一列属性列!");
|
|
}
|
|
|
|
if (!ds.Tables[0].Columns[0].ColumnName.Trim().Equals("型号"))
|
|
{
|
|
throw new Exception(string.Format("第 1 列标题错误,当前为({0}),应为(型号)", ds.Tables[0].Columns[0].ColumnName.Trim()));
|
|
}
|
|
|
|
if (!ds.Tables[0].Columns[1].ColumnName.Trim().Equals("电压等级"))
|
|
{
|
|
throw new Exception(string.Format("第 2 列标题错误,当前为({0}),应为(电压等级)", ds.Tables[0].Columns[0].ColumnName.Trim()));
|
|
}
|
|
}
|
|
|
|
private void ReadWJ(string sPath, ref DataSet aDataExcel)
|
|
{
|
|
string sMessage = "";
|
|
aDataExcel = TExcelData.ReadExcel(sPath.Trim(), "", "", false, ref sMessage);
|
|
if (!sMessage.Trim().Equals(""))
|
|
{
|
|
throw new Exception("文件读取失败!");
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|