Files
2026-08-21 17:03:02 +08:00

498 lines
20 KiB
C#
Raw Permalink 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.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_MISPRO.Utility;
using GThinking.N_CONTROL;
using System.IO;
using System.Data.OleDb;
using System.Data.Common;
using GThinking.N_MISPROAS;
namespace GThinking.N_XLXSBJ
{
public partial class DRBJDMX : SingleCardBase
{
DRBJDMXB entity = new DRBJDMXB();
#region page类事件
protected void Page_Load(object sender, EventArgs e)
{
this.UMID = 100860000;
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;
if (AppRuntime.BitType == AppBitType.Bit32)
fupdPost.Filter = "XLS";
else // AppBitType.Bit64
fupdPost.Filter = "XLS,XLSX";
base.InitPage();
if (PageParam.GetRTrimString("XSYSCP") == "Y")
lblKZJLM.Text = lblKZJLM.Text.Trim() + "、原始产品";
if (PageParam.GetRTrimString("XSYXJ") == "Y")
lblKZJLM.Text = lblKZJLM.Text.Trim() + "、意向价";
if (PageParam.GetRTrimString("XSYZ") == "Y")
lblKZJLM.Text = lblKZJLM.Text.Trim() + "、印字";
if (PageParam.GetRTrimString("XSBH") == "Y")
lblKZJLM.Text = lblKZJLM.Text.Trim() + "、包号";
if (PageParam.GetRTrimString("XSCPBJXJ") == "Y")
lblKZJLM.Text = lblKZJLM.Text.Trim() + "、产品报价限价、报价金额限价";
if (!IsPostBack)
{
txtBJDID.Value = PageParam.GetRTrimString("BJDID");
}
}
#endregion
#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);
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);
ExcelColumnValid(aDataExcel);
InsertMX(dberp, sSQL, aDataExcel);
dberp.CommitTrans();
if (PageParam.GetRTrimString("txtNeedCallBackCID").Equals(""))
{
ShowMessage("导入成功!");
CloseWindow();
}
else
{
DialogOperationScript dos = new DialogOperationScript(this);
dos.SetOwnerControlValue(PageParam.GetRTrimString("txtNeedCallBackCID"), "Y");
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 bool IsExsitMX(string sBJDID, int XH)
//{
// return CMISproDataBase.ExistsRecord("DBERP", String.Format("select 1 from XLBJDMX where XLBJDMX_BJDID = '{0}' and XLBJDMX_XH = {1}", sBJDID, XH));
//}
private void InsertMX(TDatabase dberp, TSQL sSQL, DataSet ds)
{
string sErrorNum = "";
int iStartXH = 0;
bool bNeedUp = false;
int tmpXSWS = string.IsNullOrEmpty(GetOption("BJU002")) ? 5 : CMISproConvert.StrToInt(GetOption("BJU002"));
if (tmpXSWS < 0)
tmpXSWS = 0;
else if (tmpXSWS > 8)
tmpXSWS = 8;
//A|× B|*
string sXLJGU007 = GetOption(102579000, "XLJGU007");
string sBJU003 = GetOption("BJU003");
string sXSQYID = PageParam.GetRTrimString("XSQYID");
string sBJLY = PageParam.GetRTrimString("BJLY");
string sBJFLID = PageParam.GetRTrimString("BJFLID");
string sBJDHQLY = PageParam.GetRTrimString("BJDHQLY");
string sBJRQ = PageParam.GetRTrimString("BJRQ");
string sCPBJMRXSWS = PageParam.GetRTrimString("CPBJMRXSWS");
string sDefaultXLBZID = XLBJDUtils.GetDefaultXLBZID();
//动态添加的栏目对应序号
int ColumnIndex = 6;
int indexYSCP = -1;
int indexYXJ = -1;
int indexYZ = -1;
int indexBH = -1;
int indexCPBJXJ = -1;
int indexBJJEXJ = -1;
if (PageParam.GetRTrimString("XSYSCP") == "Y")
{
ColumnIndex++;
indexYSCP = ColumnIndex;
}
if (PageParam.GetRTrimString("XSYXJ") == "Y")
{
ColumnIndex++;
indexYXJ = ColumnIndex;
}
if (PageParam.GetRTrimString("XSYZ") == "Y")
{
ColumnIndex++;
indexYZ = ColumnIndex;
}
if (PageParam.GetRTrimString("XSBH") == "Y")
{
ColumnIndex++;
indexBH = ColumnIndex;
}
if (PageParam.GetRTrimString("XSCPBJXJ") == "Y")
{
ColumnIndex++;
indexCPBJXJ = ColumnIndex;
ColumnIndex++;
indexBJJEXJ = ColumnIndex;
}
Dictionary<string, string> dicDRMXBZ = new Dictionary<string, string>();
dicDRMXBZ.Clear();
sSQL.Clear();
sSQL.Add("select XLBZ_XLBZID,XLBZ_XLBZLXMC from XLBZ where 1 = 1 ");
DataSet dsXLBZ = dberp.OpenDataSet(sSQL);
if (dsXLBZ.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < dsXLBZ.Tables[0].Rows.Count; i++)
{
dicDRMXBZ.Add(dsXLBZ.Tables[0].Rows[i]["XLBZ_XLBZID"].ToString().Trim(), dsXLBZ.Tables[0].Rows[i]["XLBZ_XLBZLXMC"].ToString().Trim());
}
}
foreach (DataRow Row in ds.Tables[0].Rows)
{
if (!Row[0].ToString().Trim().Equals("") && !Row[1].ToString().Trim().Equals(""))
{
string sXLXHID = sGetCellTest(Row, 0).Trim();
string sXLGGID = sGetCellTest(Row, 1).Trim();
if (sXLJGU007.Equals("A"))
{
sXLGGID = sXLGGID.Replace("x", "X").Replace("X", "*").Replace("*", "×");
}
else if (sXLJGU007.Equals("B"))
{
sXLGGID = sXLGGID.Replace("x", "X").Replace("X", "*").Replace("×", "*");
}
string sXLBZID = XLBJDUtils.GetBZXLZBZID(sGetCellTest(Row, 2).Trim(), sDefaultXLBZID, dicDRMXBZ);
string sXLDYDJ = sGetCellTest(Row, 3).Trim();
if (sXLXHID.Equals("") || sXLGGID.Equals(""))
continue;
XLBJDUtils.ExistCLQD(ref sXLXHID, ref sXLGGID, ref sXLBZID, ref sXLDYDJ);
int iXH = CMISproDataBase.GetMaxXH("DBERP", "XLXSBJDMX", "XLXSBJDMX_XH", "XLXSBJDMX_BJDID='" + txtBJDID.Value.Trim() + "'") + 1;
int iXSSX = CMISproDataBase.GetMaxXH("DBERP", "XLXSBJDMX", "XLXSBJDMX_XSSX", "XLXSBJDMX_BJDID = '" + txtBJDID.Value.Trim() + "'") + 1;
if (iStartXH == 0)
{
iStartXH = iXH;
}
string sJLDW = sGetCellTest(Row, 4);
if (sJLDW.Equals(""))
{
sJLDW = sBJU003;
}
else if (sJLDW.ToUpper().Equals("KM"))
{
sJLDW = "Km";
}
else if (sJLDW.ToUpper().Equals("M"))
{
sJLDW = "M";
}
//如果报价数量不合法或小于0,则按0导入
double fBJSL = CMISproConvert.StrToFloat(sGetCellTest(Row, 5), 0);
if (fBJSL < 0)
fBJSL = 0;
string sBJCP = "";
try
{
sBJCP = sGetCellTest(Row, 6);
}
catch
{
sBJCP = "";
}
string sYSCP = "";
try
{
sYSCP = sGetCellTest(Row, indexYSCP);
}
catch
{
sYSCP = "";
}
double dYXJG = 0;
try
{
dYXJG = CMISproConvert.StrToFloat(sGetCellTest(Row, indexYXJ), 0);
if (dYXJG < 0)
dYXJG = 0;
}
catch
{
dYXJG = 0;
}
string sYZ = "";
try
{
sYZ = sGetCellTest(Row, indexYZ);
}
catch
{
sYZ = "";
}
string sBH = "";
try
{
sBH = sGetCellTest(Row, indexBH);
}
catch
{
sBH = "";
}
double dCPBJXJ = 0;
try
{
dCPBJXJ = CMISproConvert.StrToFloat(sGetCellTest(Row, indexCPBJXJ), 0);
if (dCPBJXJ < 0)
dCPBJXJ = 0;
}
catch
{
dCPBJXJ = 0;
}
double dBJJEXJ = 0;
try
{
dBJJEXJ = CMISproConvert.StrToFloat(sGetCellTest(Row, indexBJJEXJ), 0);
if (dBJJEXJ < 0)
dBJJEXJ = 0;
}
catch
{
dBJJEXJ = 0;
}
sSQL.Clear();
sSQL.Add(" insert into XLXSBJDMX( ");
sSQL.Add(" XLXSBJDMX_BJDID, XLXSBJDMX_XH, XLXSBJDMX_XSSX, XLXSBJDMX_XLXHID, XLXSBJDMX_XLGGID,XLXSBJDMX_XDXLXHID,XLXSBJDMX_XDXLBZID, ");
sSQL.Add(" XLXSBJDMX_XLBZID, XLXSBJDMX_DYDJID, XLXSBJDMX_XLYSID,XLXSBJDMX_YSCP, XLXSBJDMX_BJCP,XLXSBJDMX_BJCPSD,XLXSBJDMX_WGCPBZ, ");
sSQL.Add(" XLXSBJDMX_JLDW, XLXSBJDMX_BJSL, XLXSBJDMX_JGBBJ, XLXSBJDMX_TZQCPBJ,XLXSBJDMX_TZCPBJ,XLXSBJDMX_CPBJ, XLXSBJDMX_TZQBJJE,XLXSBJDMX_BJJE, XLXSBJDMX_JGBJJ,XLXSBJDMX_CLCB,XLXSBJDMX_JGBBJLJJCL,XLXSBJDMX_JGBBJJCL,XLXSBJDMX_JGBBJJCE,XLXSBJDMX_CLZL, ");
sSQL.Add(" XLXSBJDMX_BJDHQCLCB,XLXSBJDMX_CLCBJCL,XLXSBJDMX_YXJG,XLXSBJDMX_YZ,XLXSBJDMX_FBH,XLXSBJDMX_CPBJXJ,XLXSBJDMX_BJJEXJ,XLXSBJDMX_BZ,XLXSBJDMX_DZSC, XLXSBJDMX_WHRID, XLXSBJDMX_WHR, XLXSBJDMX_WHSJ)");
sSQL.Add(" values(");
sSQL.Add(" :XLXSBJDMX_BJDID, :XLXSBJDMX_XH, :XLXSBJDMX_XSSX, :XLXSBJDMX_XLXHID, :XLXSBJDMX_XLGGID,:XLXSBJDMX_XDXLXHID,:XLXSBJDMX_XDXLBZID, ");
sSQL.Add(" :XLXSBJDMX_XLBZID, isnull(:XLXSBJDMX_DYDJID,' '), :XLXSBJDMX_XLYSID,:XLXSBJDMX_YSCP, :XLXSBJDMX_BJCP,:XLXSBJDMX_BJCPSD,:XLXSBJDMX_WGCPBZ, ");
sSQL.Add(" :XLXSBJDMX_JLDW, :XLXSBJDMX_BJSL, :XLXSBJDMX_JGBBJ, :XLXSBJDMX_TZQCPBJ,:XLXSBJDMX_TZCPBJ,:XLXSBJDMX_CPBJ, :XLXSBJDMX_TZQBJJE,:XLXSBJDMX_BJJE, :XLXSBJDMX_JGBJJ,:XLXSBJDMX_CLCB,:XLXSBJDMX_JGBBJLJJCL,:XLXSBJDMX_JGBBJJCL,:XLXSBJDMX_JGBBJJCE,:XLXSBJDMX_CLZL, ");
sSQL.Add(" :XLXSBJDMX_BJDHQCLCB,:XLXSBJDMX_CLCBJCL,:XLXSBJDMX_YXJG,:XLXSBJDMX_YZ,:XLXSBJDMX_FBH,:XLXSBJDMX_CPBJXJ,:XLXSBJDMX_BJJEXJ,:XLXSBJDMX_BZ,:XLXSBJDMX_DZSC, :XLXSBJDMX_WHRID, :XLXSBJDMX_WHR, :XLXSBJDMX_WHSJ)");
sSQL.ParamByName("XLXSBJDMX_BJDID").Value = txtBJDID.Value.Trim();
sSQL.ParamByName("XLXSBJDMX_XH").Value = iXH;
sSQL.ParamByName("XLXSBJDMX_XSSX").Value = iXSSX;
sSQL.ParamByName("XLXSBJDMX_XLXHID").Value = sXLXHID;
sSQL.ParamByName("XLXSBJDMX_XLGGID").Value = sXLGGID;
sSQL.ParamByName("XLXSBJDMX_XLBZID").Value = sXLBZID;
sSQL.ParamByName("XLXSBJDMX_DYDJID").Value = sXLDYDJ;
sSQL.ParamByName("XLXSBJDMX_XDXLXHID").Value = sXLXHID;
sSQL.ParamByName("XLXSBJDMX_XDXLBZID").Value = sXLBZID;
sSQL.ParamByName("XLXSBJDMX_XLYSID").Value = XLBJDInfo.GetDefaultYSID(sXLXHID, sXLGGID);
if (!sBJCP.Trim().Equals(""))
{
sSQL.ParamByName("XLXSBJDMX_BJCP").Value = sBJCP;
sSQL.ParamByName("XLXSBJDMX_BJCPSD").Value = "Y";
}
else
{
if (string.IsNullOrEmpty(sXLDYDJ))
sSQL.ParamByName("XLXSBJDMX_BJCP").Value = sXLXHID + " " + sXLGGID;
else
sSQL.ParamByName("XLXSBJDMX_BJCP").Value = sXLXHID + "-" + sXLDYDJ + " " + sXLGGID;
sSQL.ParamByName("XLXSBJDMX_BJCPSD").Value = "N";
}
//即使不是基础计量单位,也应当直接导入。
sSQL.ParamByName("XLXSBJDMX_JLDW").Value = sJLDW;
sSQL.ParamByName("XLXSBJDMX_BJSL").Value = fBJSL;
sSQL.ParamByName("XLXSBJDMX_YXJG").Value = dYXJG;
sSQL.ParamByName("XLXSBJDMX_YZ").Value = sYZ;
sSQL.ParamByName("XLXSBJDMX_YSCP").Value = sYSCP;
sSQL.ParamByName("XLXSBJDMX_JGBBJ").Value = 0.0;
sSQL.ParamByName("XLXSBJDMX_TZQCPBJ").Value = 0.0;
sSQL.ParamByName("XLXSBJDMX_TZCPBJ").Value = 0;
sSQL.ParamByName("XLXSBJDMX_CPBJ").Value = 0.0;
sSQL.ParamByName("XLXSBJDMX_JGBJJ").Value = 0.0;
sSQL.ParamByName("XLXSBJDMX_CLCB").Value = 0.0;
sSQL.ParamByName("XLXSBJDMX_BJDHQCLCB").Value = 0.0;
sSQL.ParamByName("XLXSBJDMX_CLZL").Value = 0.0;
sSQL.ParamByName("XLXSBJDMX_BJJE").Value = NumberUtils.RoundX(fBJSL * CMISproConvert.StrToFloat(sSQL.ParamByName("XLXSBJDMX_CPBJ").Value.ToString(), 0), 2).ToString();
sSQL.ParamByName("XLXSBJDMX_TZQBJJE").Value = sSQL.ParamByName("XLXSBJDMX_BJJE").Value;
sSQL.ParamByName("XLXSBJDMX_JGBBJJCE").Value = 0;
sSQL.ParamByName("XLXSBJDMX_JGBBJJCL").Value = 0;
sSQL.ParamByName("XLXSBJDMX_JGBBJLJJCL").Value = 0;
sSQL.ParamByName("XLXSBJDMX_CLCBJCL").Value = 0;
sSQL.ParamByName("XLXSBJDMX_FBH").Value = sBH;
sSQL.ParamByName("XLXSBJDMX_CPBJXJ").Value = dCPBJXJ;
sSQL.ParamByName("XLXSBJDMX_BJJEXJ").Value = dBJJEXJ;
sSQL.ParamByName("XLXSBJDMX_WGCPBZ").Value = "N";
sSQL.ParamByName("XLXSBJDMX_BZ").Value = "";
if (XLBJDUtils.ISDZBZ(sXLBZID))
{
sSQL.ParamByName("XLXSBJDMX_DZSC").Value = "Y";
}
else
{
sSQL.ParamByName("XLXSBJDMX_DZSC").Value = "N";
}
sSQL.ParamByName("XLXSBJDMX_WHR").Value = tSession.UserName;
sSQL.ParamByName("XLXSBJDMX_WHRID").Value = tSession.UserId;
sSQL.ParamByName("XLXSBJDMX_WHSJ").Value = CMISproConvert.ConvertTime(DateTime.Now);
dberp.ExecSQL(sSQL);
bNeedUp = true;
}
}
XLBJDUtils.UpdateXDXLBZID(dberp, sSQL, txtBJDID.Value.Trim(), "", iStartXH - 1, ref sErrorNum);
XLBJDUtils.SyncXLXSBJXLGGTHB_ByXLXSBJDMX_Batch(dberp, tSession, txtBJDID.Value.Trim(), "", iStartXH - 1);
if (bNeedUp)
{
XLBJDCalcUtils.CalcBJDMXAfterIns(dberp, sSQL, txtBJDID.Value.Trim(), iStartXH, GetOption("BJU002"), sBJU003, GetOption("BJU018"), tSession.UserId, tSession.UserName, ref sErrorNum);
}
}
private void ExcelColumnValid(DataSet ds)
{
Dictionary<string, string> ColumnNames = new Dictionary<string, string>();
ColumnNames.Add("0", "型号");
ColumnNames.Add("1", "规格");
ColumnNames.Add("2", "标准");
ColumnNames.Add("3", "电压等级");
ColumnNames.Add("4", "计量单位");
ColumnNames.Add("5", "报价数量");
ColumnNames.Add("6", "报价产品");
int ColumnIndex = 6;
if (PageParam.GetRTrimString("XSYSCP") == "Y")
{
ColumnIndex++;
ColumnNames.Add(ColumnIndex.ToString(), "原始产品");
}
if (PageParam.GetRTrimString("XSYXJ") == "Y")
{
ColumnIndex++;
ColumnNames.Add(ColumnIndex.ToString(), "意向价");
}
if (PageParam.GetRTrimString("XSYZ") == "Y")
{
ColumnIndex++;
ColumnNames.Add(ColumnIndex.ToString(), "印字");
}
if (PageParam.GetRTrimString("XSBH") == "Y")
{
ColumnIndex++;
ColumnNames.Add(ColumnIndex.ToString(), "包号");
}
if (PageParam.GetRTrimString("XSCPBJXJ") == "Y")
{
ColumnIndex++;
ColumnNames.Add(ColumnIndex.ToString(), "产品报价限价");
ColumnIndex++;
ColumnNames.Add(ColumnIndex.ToString(), "报价金额限价");
}
for (int i = 0; i < 6; i++)
{
try
{
if (!ds.Tables[0].Columns[i].ColumnName.Trim().Equals(ColumnNames[i.ToString()].Trim()))
{
throw new Exception("栏目[" + ds.Tables[0].Columns[i].ColumnName + "]与导入文件要求的栏目格式不一致!");
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
}
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("文件读取失败!具体原因:" + sMessage);
}
}
private string sGetCellTest(DataRow Row, int ColumnIndex)
{
return Row[ColumnIndex].ToString().Trim().Replace("\r\n", "").Replace("\n", "");
}
#endregion
}
}