Files
U20261363_N_XLXSBJ/XLBJD_WGCPBJDRInfo.aspx.cs
2026-10-09 10:25:33 +08:00

454 lines
21 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_MISPRO.Utility;
using GThinking.N_CONTROL;
using System.IO;
using System.Data.OleDb;
using System.Data.Common;
using GThinking.N_MISPROAS;
namespace GThinking.U20261363_N_XLXSBJ
{
[TableMap(DB = "DBERP", DbTableName = "XLXSBJDMX", Umid = 100860174, IsWorkFlow = false)]
public class XLBJD_WGCPCLCB_DREntity : EntityManager
{
}
public partial class XLBJD_WGCPBJDRInfo : SingleCardBase
{
XLBJD_WGCPCLCB_DREntity entity = new XLBJD_WGCPCLCB_DREntity();
private string sBJDID = "";
private string sWGCPTZBZ = "";
#region page类事件
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;
if (AppRuntime.BitType == AppBitType.Bit32)
{
fupdPost.Filter = "XLS";
}
else // AppBitType.Bit64
{
fupdPost.Filter = "XLS,XLSX";
}
base.InitPage();
sBJDID = PageParam.GetRTrimString("BJDID");
sWGCPTZBZ = PageParam.GetRTrimString("WGCPTZBZ");
}
#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);
UpdateJGBBJ(dberp, sSQL, aDataExcel);
dberp.CommitTrans();
if (sWGCPTZBZ == "N")
ShowMessage("已完成无表价产品表价的更新!");
else
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);
}
}
protected void btnQX_Click(object sender, EventArgs e)
{
CloseWindow();
}
#endregion
#region 自定义事件
//根据表格,更新价格表表价
private void UpdateJGBBJ(TDatabase dberp, TSQL SQL, DataSet ds)
{
string sXLXHID = "";
string sXLGGID = "";
string sXLBZID = "";
string sDYDJID = "";
string sXLYSID = "";
string sJLDW = "";
string sBJSL = "";
string sJGBBJ = "";
string sBZ = "";
double dXH = 0;
string sBJDXHList = "";
int tmpXSWS = string.IsNullOrEmpty(GetOption(100860000, "BJU002")) ? 5 : CMISproConvert.StrToInt(GetOption(100860000, "BJU002"));
if (tmpXSWS < 0)
tmpXSWS = 0;
else if (tmpXSWS > 8)
tmpXSWS = 8;
string sBJFLID = PageParam.GetRTrimString("BJFLID");
string sCPBJMRXSWS = PageParam.GetRTrimString("CPBJMRXSWS");
string sJCLLX = PageParam.GetRTrimString("JCLLX");
string sLJJCL = PageParam.GetRTrimString("LJJCLLX");
DateTime tWHSJCondition = MISproUtils.GetServerTime();
Dictionary<string, string> dic = new Dictionary<string, string>();
double fCLZL = 0;
double dCPJJ = 0;
double dJJ = 0;
double dCLCB = 0;
double dBJDHQCLCB = 0;
double dCJ = 0;
#region 完成报价单明细的更新
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
sXLXHID = ds.Tables[0].Rows[i]["型号"].ToString().Trim();
sXLGGID = ds.Tables[0].Rows[i]["规格"].ToString().Trim();
sXLBZID = ds.Tables[0].Rows[i]["标准"].ToString().Trim().Split('|')[0];
sDYDJID = ds.Tables[0].Rows[i]["电压等级"].ToString().Trim();
sJLDW = ds.Tables[0].Rows[i]["计量单位"].ToString().Trim();
sXLYSID = ds.Tables[0].Rows[i]["颜色"].ToString().Trim().Split('|')[0];
sBJSL = ds.Tables[0].Rows[i]["报价数量"].ToString().Trim();
sJGBBJ = ds.Tables[0].Rows[i]["表价"].ToString().Trim();
sBZ = ds.Tables[0].Rows[i]["备注"].ToString().Trim();
if (ds.Tables[0].Columns.Contains("序号"))
dXH = CMISproConvert.StrToFloat(ds.Tables[0].Rows[i]["序号"].ToString().Trim(), 0);
SQL.Clear();
if (sWGCPTZBZ == "N")
{
if (dXH == 0)
{
SQL.Add("update XLXSBJDMX set XLXSBJDMX_JGBBJ =:pJGBBJ, XLXSBJDMX_JGBBJTZ = 'Y', XLXSBJDMX_JGBBJGXSJ = :pJGBBJGXSJ,XLXSBJDMX_BZ = XLXSBJDMX_BZ||:pBZ,XLXSBJDMX_BJLY='SSJGBBJ' ");
SQL.Add(",XLXSBJDMX_WHR=:pWHR,XLXSBJDMX_WHRID=:pWHRID,XLXSBJDMX_WHSJ=:tWHSJCondition ");
SQL.Add("where 1=1 ");
SQL.Add(" and XLXSBJDMX_XLXHID =:pXLXHID ");
SQL.Add(" and XLXSBJDMX_XLGGID =:pXLGGID ");
SQL.Add(" and XLXSBJDMX_XLBZID =:pXLBZID ");
SQL.Add(" and XLXSBJDMX_DYDJID =:pDYDJID ");
SQL.Add(" and XLXSBJDMX_JLDW =:pJLDW ");
SQL.Add(" and XLXSBJDMX_XLYSID =:pXLYSID ");
SQL.ParamByName("pXLXHID").Value = sXLXHID;
SQL.ParamByName("pXLGGID").Value = sXLGGID;
SQL.ParamByName("pXLBZID").Value = sXLBZID;
SQL.ParamByName("pDYDJID").Value = XLBJDUtils.FetEmptyStr(sDYDJID);
SQL.ParamByName("pJLDW").Value = sJLDW;
SQL.ParamByName("pXLYSID").Value = sXLYSID;
}
else
{
SQL.Add("update XLXSBJDMX set XLXSBJDMX_JGBBJ =:pJGBBJ, XLXSBJDMX_JGBBJTZ = 'Y', XLXSBJDMX_JGBBJGXSJ = :pJGBBJGXSJ,XLXSBJDMX_BZ = XLXSBJDMX_BZ||:pBZ,XLXSBJDMX_BJLY='SSJGBBJ' ");
SQL.Add(",XLXSBJDMX_WHR=:pWHR,XLXSBJDMX_WHRID=:pWHRID,XLXSBJDMX_WHSJ=:tWHSJCondition ");
SQL.Add(",XLXSBJDMX_XLXHID =:pXLXHID,XLXSBJDMX_XLGGID =:pXLGGID,XLXSBJDMX_XLBZID =:pXLBZID,XLXSBJDMX_DYDJID =:pDYDJID ");
SQL.Add("where 1=1 ");
SQL.Add(" and XLXSBJDMX_XH=:pXH");
SQL.ParamByName("pXH").Value = dXH;
SQL.ParamByName("pXLXHID").Value = sXLXHID;
SQL.ParamByName("pXLGGID").Value = sXLGGID;
SQL.ParamByName("pXLBZID").Value = sXLBZID;
SQL.ParamByName("pDYDJID").Value = XLBJDUtils.FetEmptyStr(sDYDJID);
}
SQL.Add(" and XLXSBJDMX_JGBBJ = 0 ");
SQL.Add(" and not exists (select 1 from XLXSBJYLZDMX left join XLXSBJYLZD on XLXSBJYLZD_SQDH = XLXSBJYLZDMX_SQDH where XLXSBJYLZD_BJDID = XLXSBJDMX_BJDID and XLXSBJYLZDMX_BJDXH = XLXSBJDMX_XH ) ");
SQL.Add(" and XLXSBJDMX_BJDID = :XLXSBJDMX_BJDID ");
SQL.ParamByName("pJGBBJ").Value = CMISproConvert.StrToFloat(sJGBBJ);
SQL.ParamByName("pJGBBJGXSJ").Value = MISproUtils.GetServerTime();
SQL.ParamByName("pBZ").Value = sBZ;
SQL.ParamByName("pWHR").Value = tSession.UserName;
SQL.ParamByName("pWHRID").Value = tSession.UserId;
SQL.ParamByName("tWHSJCondition").Value = tWHSJCondition;
SQL.ParamByName("XLXSBJDMX_BJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
if (CMISproConvert.StrToFloat(sJGBBJ) == 0 && dXH > 0)
{
dic.Clear();
dic.Add("sXH", dXH.ToString());
dic.Add("fBJSL", sBJSL);
dic.Add("sJLDW", sJLDW);
dic.Add("iXSWS", tmpXSWS.ToString().Trim());
dic.Add("sXSQYID", PageParam.GetRTrimString("XSQYID"));
dic.Add("sBJFLID", PageParam.GetRTrimString("BJFLID"));
dic.Add("sJGBID", PageParam.GetRTrimString("JGBID"));
dic.Add("sBJDHQLY", PageParam.GetRTrimString("BJDHQLY"));
dic.Add("sBJRQ", PageParam.GetRTrimString("BJRQ"));
dic.Add("sJGBIDS", PageParam.GetRTrimString("JGBIDS"));
dic.Add("fJZBJHS", PageParam.GetRTrimString("HSBZ"));
dic.Add("sLJJCLLX", PageParam.GetRTrimString("LJJCLLX"));
dic.Add("sJCLLX", PageParam.GetRTrimString("JCLLX"));
dic.Add("sBJLY", PageParam.GetRTrimString("BJLY"));
dic.Add("sJSBLFS", PageParam.GetRTrimString("JSBLFS"));
dic.Add("sTZCLHQ", PageParam.GetRTrimString("TZCLHQ"));
dic.Add("sJGCIDS", PageParam.GetRTrimString("JGCIDS"));
dic.Add("sJGBTJYS", PageParam.GetRTrimString("JGBTJYS"));
dic.Add("sTBJCLID", PageParam.GetRTrimString("TBJCLID"));
dic.Add("sLBJCLID", PageParam.GetRTrimString("LBJCLID"));
dic.Add("sTJ", PageParam.GetRTrimString("TJ"));
dic.Add("sLJ", PageParam.GetRTrimString("LJ"));
dic.Add("sBJU003", GetOption(100860000, "BJU003"));
dic.Add("sBJU018", GetOption(100860000, "BJU018"));
string sWGCPBZ = "N";
string sJGFBZ = "N";
Dictionary<string, double> dicJJYZList_JGE = new Dictionary<string, double>();
XLBJDUtils.UpdateXLXSBJDMX_JGBBJ(dberp, SQL, sBJDID, sXLXHID, sXLGGID, sXLBZID, sDYDJID, dic, ref dCPJJ, ref dJJ, ref dCLCB, ref dBJDHQCLCB, ref fCLZL,ref dCJ, ref dicJJYZList_JGE, ref sWGCPBZ, ref sJGFBZ);
if (dicJJYZList_JGE.Count > 0)
{
SQL.Clear();
SQL.Add("update XLXSBJDJJYZ set XLXSBJDJJYZ_YZZ01=:pYZZ01,XLXSBJDJJYZ_YZZ02=:pYZZ02,XLXSBJDJJYZ_YZZ03=:pYZZ03,XLXSBJDJJYZ_YZZ04=:pYZZ04,XLXSBJDJJYZ_YZZ05=:pYZZ05,");
SQL.Add(" XLXSBJDJJYZ_YZZ06=:pYZZ06,XLXSBJDJJYZ_YZZ07=:pYZZ07,XLXSBJDJJYZ_YZZ08=:pYZZ08,XLXSBJDJJYZ_YZZ09=:pYZZ09,XLXSBJDJJYZ_YZZ10=:pYZZ10 ");
SQL.Add(" where XLXSBJDJJYZ_BJDID=:pBJDID and XLXSBJDJJYZ_XH=:pBJDXH");
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pBJDXH").Value = dXH;
SQL.ParamByName("pYZZ01").Value = dicJJYZList_JGE["JZ01"];
SQL.ParamByName("pYZZ02").Value = dicJJYZList_JGE["JZ02"];
SQL.ParamByName("pYZZ03").Value = dicJJYZList_JGE["JZ03"];
SQL.ParamByName("pYZZ04").Value = dicJJYZList_JGE["JZ04"];
SQL.ParamByName("pYZZ05").Value = dicJJYZList_JGE["JZ05"];
SQL.ParamByName("pYZZ06").Value = dicJJYZList_JGE["JZ06"];
SQL.ParamByName("pYZZ07").Value = dicJJYZList_JGE["JZ07"];
SQL.ParamByName("pYZZ08").Value = dicJJYZList_JGE["JZ08"];
SQL.ParamByName("pYZZ09").Value = dicJJYZList_JGE["JZ09"];
SQL.ParamByName("pYZZ10").Value = dicJJYZList_JGE["JZ10"];
dberp.ExecSQL(SQL);
}
SQL.Clear();
SQL.Add("update XLXSBJDMX set ");
SQL.Add(" XLXSBJDMX_JGBBJ = :pJGBBJ, ");
SQL.Add(" XLXSBJDMX_CJ = :XLXSBJDMX_CJ, ");
SQL.Add(" XLXSBJDMX_JGBBJTZ = 'N', ");
SQL.Add(" XLXSBJDMX_JGBBJGXSJ=:pJGBBJGXSJ,");
SQL.Add(" XLXSBJDMX_JGBJJ = :pJGBJJ, ");
SQL.Add(" XLXSBJDMX_CLCB = :pCLCB, ");
SQL.Add(" XLXSBJDMX_BJDHQCLCB = :pBJDHQCLCB, ");
SQL.Add(" XLXSBJDMX_BJDHQCLCBTZ = 'N', ");
SQL.Add(" XLXSBJDMX_WGCPBZ = :pWGCPBZ, ");
SQL.Add(" XLXSBJDMX_JGFBZ = :pJGBZ, ");
SQL.Add(" XLXSBJDMX_CLZL = :pCLZL ");
SQL.Add(" where 1=1 ");
SQL.Add(" and XLXSBJDMX_BJDID = :pBJDID ");
SQL.Add(" and XLXSBJDMX_XH = :pXH ");
SQL.ParamByName("pJGBBJ").Value = dCPJJ;
SQL.ParamByName("XLXSBJDMX_CJ").Value = dCJ;
SQL.ParamByName("pJGBBJGXSJ").Value = MISproUtils.GetServerTime();
SQL.ParamByName("pJGBJJ").Value = dJJ;
SQL.ParamByName("pCLCB").Value = dCLCB;
SQL.ParamByName("pBJDHQCLCB").Value = dBJDHQCLCB;
SQL.ParamByName("pCLZL").Value = fCLZL;
SQL.ParamByName("pWGCPBZ").Value = sWGCPBZ;
SQL.ParamByName("pJGBZ").Value = sJGFBZ;
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pXH").Value = dXH;
dberp.ExecSQL(SQL);
}
}
else
{
SQL.Clear();
SQL.Add("update XLXSBJDMX set XLXSBJDMX_JGBBJ =:pJGBBJ, XLXSBJDMX_JGBBJTZ = 'Y', XLXSBJDMX_JGBBJGXSJ = :pJGBBJGXSJ,XLXSBJDMX_BZ = XLXSBJDMX_BZ||:pBZ,XLXSBJDMX_BJLY='SSJGBBJ' ");
SQL.Add("where 1=1 ");
if (dXH == 0)
{
SQL.Add(" and XLXSBJDMX_XLXHID =:pXLXHID ");
SQL.Add(" and XLXSBJDMX_XLGGID =:pXLGGID ");
SQL.Add(" and XLXSBJDMX_XLBZID =:pXLBZID ");
SQL.Add(" and XLXSBJDMX_DYDJID =:pDYDJID ");
SQL.Add(" and XLXSBJDMX_JLDW =:pJLDW ");
SQL.Add(" and XLXSBJDMX_XLYSID =:pXLYSID ");
SQL.ParamByName("pXLXHID").Value = sXLXHID;
SQL.ParamByName("pXLGGID").Value = sXLGGID;
SQL.ParamByName("pXLBZID").Value = sXLBZID;
SQL.ParamByName("pDYDJID").Value = XLBJDUtils.FetEmptyStr(sDYDJID);
SQL.ParamByName("pJLDW").Value = sJLDW;
SQL.ParamByName("pXLYSID").Value = sXLYSID;
}
else
{
SQL.Add(" and XLXSBJDMX_XH=:pXH");
SQL.ParamByName("pXH").Value = dXH;
}
SQL.Add(" and isnull(XLXSBJDMX_WGCPBZ,'N') = 'Y' ");
SQL.Add(" and XLXSBJDMX_BJDID = :XLXSBJDMX_BJDID ");
SQL.ParamByName("pJGBBJ").Value = CMISproConvert.StrToFloat(sJGBBJ);
SQL.ParamByName("pJGBBJGXSJ").Value = MISproUtils.GetServerTime();
SQL.ParamByName("pBZ").Value = sBZ;
SQL.ParamByName("XLXSBJDMX_BJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
}
}
XLBJDUtils.SyncXLXSBJXLGGTHB_ByXLXSBJDMX_Batch(dberp, tSession, sBJDID);
#endregion
#region 外购产品查询
SQL.Clear();
SQL.Add("select XLXSBJDMX_XH from XLXSBJDMX ");
SQL.Add(" where 1=1 ");
SQL.Add(" and XLXSBJDMX_BJDID = :XLXSBJDMX_BJDID ");
if (sWGCPTZBZ == "N")
SQL.Add(" and XLXSBJDMX_WHSJ=:tWHSJCondition");
else
SQL.Add(" and isnull(XLXSBJDMX_WGCPBZ,'N') = 'Y' ");
if (sWGCPTZBZ == "N")
SQL.ParamByName("tWHSJCondition").Value = tWHSJCondition;
SQL.ParamByName("XLXSBJDMX_BJDID").Value = sBJDID;
DataSet dsBJDMX = dberp.OpenDataSet(SQL);
for (int i = 0; i < dsBJDMX.Tables[0].Rows.Count; i++)
{
sBJDXHList = sBJDXHList + "," + dsBJDMX.Tables[0].Rows[i]["XLXSBJDMX_XH"].ToString().Trim();
}
sBJDXHList = sBJDXHList.TrimStart(',').TrimEnd(',');
#endregion
if (!sBJDXHList.Equals(""))
{
#region 完成报价更新
if (sWGCPTZBZ == "N")
XLBJDUtils.UpdateBJDMX(dberp, SQL, sBJFLID, sBJDID, tmpXSWS, sJCLLX, sLJJCL, sCPBJMRXSWS, sBJDXHList, 0, false, false, false, "", tWHSJCondition);
else
XLBJDUtils.UpdateBJDMX(dberp, SQL, sBJFLID, sBJDID, tmpXSWS, sJCLLX, sLJJCL, sCPBJMRXSWS, sBJDXHList, 0);
#endregion
#region 最低限价的更新
XLBJDUtils.UpdateZDXJGS(sBJDID, sBJFLID, GetOption(100860000, "BJU002"));
XLBJDUtils.UpdateJSJGS(sBJDID, sBJFLID, GetOption(100860000, "BJU002"));
#endregion
#region 完成主表信息的更新
XLBJDUtils.UpdateXLXSBJD(dberp, SQL, sBJDID, sJCLLX, sLJJCL, PageParam.GetRTrimString("ZDXJJCLLX"), PageParam.GetRTrimString("JYF"), PageParam.GetRTrimString("YSJDID"),
PageParam.GetRTrimString("GYSID"), PageParam.GetRTrimString("YFWLID"), PageParam.GetRTrimString("BJHYF"));
}
#endregion
}
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", "颜色");
ColumnNames.Add("7", "报价产品");
ColumnNames.Add("8", "报价数量");
ColumnNames.Add("9", "表价");
ColumnNames.Add("10", "备注");
for (int i = 0; i < ColumnNames.Count; 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
}
}