提交说明10/9

This commit is contained in:
2026-10-09 10:30:49 +08:00
parent f216ceb835
commit 0c0e9750e2
39 changed files with 3733 additions and 258 deletions
+300
View File
@@ -0,0 +1,300 @@
using System;
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_MODEL.Page;
using GThinking.N_MISPRO.Data;
using GThinking.N_MISPRO.Utility;
using System.Collections.Generic;
using GThinking.N_CONTROL;
using GThinking.N_MISPROAS;
namespace GThinking.N_XLXSBJ
{
public partial class TZYZBJMDRInfo : SingleCardBase
{
TZYZBJM_DR entity = new TZYZBJM_DR();
protected void Page_Load(object sender, EventArgs e)
{
this.UMID = 100860178;
this.UMName = "按型号规格电压等级报价数量区间调报价";
base.CurMaster = Master;
base.CurEntity = entity;
this.PageHeight = 210;
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,XLSX";
this.Page.Title = "导入Excel文件";
base.InitPage();
if (!IsPostBack)
{
GtLabel1.Text = "Excel栏目依次为:型号、规格、电压等级、报价数量下限、报价数量上限、调价因子";
txtJGBID.Value = PageParam.GetRTrimString("JGBID");
chkIns.Value = "Y";
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
SQL.Add("select XLXSTZYZ_YZID, XLXSTZYZ_YZMC, XLXSTZYZ_JJFS ");
SQL.Add(" from XLXSTZYZ");
SQL.Add(" where XLXSTZYZ_MXBH = 'BJD' and XLXSTZYZ_TJYS='M' ");
SQL.Add(" and XLXSTZYZ_JGBID = :pJGBID");
SQL.Add("order by XLXSTZYZ_YZID,XLXSTZYZ_XSXH");
SQL.ParamByName("pJGBID").Value = txtJGBID.Value;
DataSet ds = dberp.OpenDataSet(SQL);
cbxYZID.ClearItems();
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
string sJJFSMC = "";
if (ds.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim().Equals("JJ"))
{
sJJFSMC = "(元)";
}
else if (ds.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim().Equals("MX") || ds.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim().Equals("DX"))
{
sJJFSMC = "(X)";
}
else
{
sJJFSMC = "(%)";
}
cbxYZID.Items.Add(new ListItem(ds.Tables[0].Rows[i]["XLXSTZYZ_YZMC"].ToString().Trim() + sJJFSMC, ds.Tables[0].Rows[i]["XLXSTZYZ_YZID"].ToString().Trim()));
}
if (ds.Tables[0].Rows.Count == 1)
{
cbxYZID.SelectedValue = ds.Tables[0].Rows[0]["XLXSTZYZ_YZID"].ToString().Trim();
}
}
}
#region 控件事件
protected void btnQD_Click(object sender, EventArgs e)
{
if (cbxYZID.SelectedValue.Trim().Equals(""))
{
ShowMessage("请选择待设置的调价因子!");
return;
}
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);
InsertYZZM(dberp, sSQL, aDataExcel);
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
{
if (!fupdPost.FilePath.Trim().Equals("") && System.IO.File.Exists(fupdPost.FilePath.Trim()))
System.IO.File.Delete(fupdPost.FilePath.Trim());
}
}
protected void btnQX_Click(object sender, EventArgs e)
{
CloseWindow();
}
#endregion
#region 自定义函数
private void InsertYZZM(TDatabase dberp, TSQL sSQL, DataSet ds)
{
int rrrorNUM = 2;
foreach (DataRow Row in ds.Tables[0].Rows)
{
string sXLXHID = sGetCellTest(Row, 0).Trim();
string sXLGGID = sGetCellTest(Row, 1).Trim();
string sDYDJID = sGetCellTest(Row, 2).Trim();
double dBJSLXX = CMISproConvert.StrToFloat(sGetCellTest(Row, 3), 0);
double dBJSLSX = CMISproConvert.StrToFloat(sGetCellTest(Row, 4), 0);
double dYZZ = CMISproConvert.StrToFloat(sGetCellTest(Row, 5), 0);
if (sXLXHID.Trim().Equals(""))
{
throw new Exception("第" + rrrorNUM + "行型号为空!");
}
if (!CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLXHB where XLXHB_XLXHID='{0}' and ISNULL(XLXHB_TYBZ,'N') <> 'Y' ", sXLXHID)))
{
throw new Exception("第" + rrrorNUM + "行型号[" + sXLXHID + "]不存在或已停用!");
}
if (sXLGGID.Trim().Equals(""))
{
throw new Exception("第" + rrrorNUM + "行规格为空!");
}
if (sXLGGID.Trim().Length > 60)
{
throw new Exception("第" + rrrorNUM + "行规格[" + sXLGGID + "]长度超过60个字符!");
}
if (!sDYDJID.Trim().Equals("") && !CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLDYDJB where XLDYDJB_DYDJID='{0}' and ISNULL(XLDYDJB_TYBZ,'N') <> 'Y' ", sDYDJID)))
{
throw new Exception("第" + rrrorNUM + "行电压等级[" + sDYDJID + "]不存在或已停用!");
}
if (dBJSLXX < 0)
{
throw new Exception("第" + rrrorNUM + "行报价数量下限[" + dBJSLXX + "]不合法!");
}
if (dBJSLSX < 0 || (dBJSLSX != 0 && dBJSLXX > dBJSLSX))
{
throw new Exception("第" + rrrorNUM + "行报价数量上限[" + dBJSLSX + "]不合法,上限为0表示不限制,否则必须大于等于下限!");
}
if (ExistsBJSLQJ(dBJSLXX, dBJSLSX, sXLXHID, sXLGGID, sDYDJID))
{
throw new Exception("第" + rrrorNUM + "行报价数量区间[" + dBJSLXX + "~" + (dBJSLSX == 0 ? "--" : dBJSLSX.ToString()) + "]与已有记录有交集,不允许导入!");
}
//已存在相同区间记录时更新,否则依选择决定是否插入
if (CMISproDataBase.ExistsRecord("DBERP", GetExistsSQL(dBJSLXX, dBJSLSX, sXLXHID, sXLGGID, sDYDJID)))
{
sSQL.Clear();
sSQL.Add("update XLXSBJDYZZM set XLXSBJDYZZM_YZZ = :pYZZ,XLXSBJDYZZM_WHR = :pWHR,XLXSBJDYZZM_WHRID =:pWHRID,XLXSBJDYZZM_WHSJ =:pWHSJ ");
sSQL.Add(" where XLXSBJDYZZM_JGBID=:pJGBID");
sSQL.Add(" and XLXSBJDYZZM_XLXHID=:pXLXHID");
sSQL.Add(" and XLXSBJDYZZM_XLGGID=:pXLGGID");
sSQL.Add(" and XLXSBJDYZZM_DYDJID=:pDYDJID");
sSQL.Add(" and XLXSBJDYZZM_BJSLSX=:pBJSLSX");
sSQL.Add(" and XLXSBJDYZZM_BJSLXX=:pBJSLXX");
sSQL.Add(" and XLXSBJDYZZM_YZID=:pYZID");
FillKeyParams(sSQL, dBJSLXX, dBJSLSX, sXLXHID, sXLGGID, sDYDJID);
sSQL.ParamByName("pYZZ").Value = dYZZ;
sSQL.ParamByName("pWHR").Value = tSession.UserName;
sSQL.ParamByName("pWHRID").Value = tSession.UserId;
sSQL.ParamByName("pWHSJ").Value = DateTime.Now;
dberp.ExecSQL(sSQL);
}
else
{
if (chkIns.Checked)//不存在的记录自动插入
{
sSQL.Clear();
sSQL.Add("insert into XLXSBJDYZZM(XLXSBJDYZZM_JGBID,XLXSBJDYZZM_XLXHID,XLXSBJDYZZM_XLGGID,XLXSBJDYZZM_DYDJID,XLXSBJDYZZM_BJSLSX,XLXSBJDYZZM_BJSLXX,XLXSBJDYZZM_YZID,XLXSBJDYZZM_YZZ,XLXSBJDYZZM_WHR,XLXSBJDYZZM_WHRID,XLXSBJDYZZM_WHSJ)");
sSQL.Add(" values(:pJGBID,:pXLXHID,:pXLGGID,:pDYDJID,:pBJSLSX,:pBJSLXX,:pYZID,:pYZZ,:pWHR,:pWHRID,:pWHSJ)");
FillKeyParams(sSQL, dBJSLXX, dBJSLSX, sXLXHID, sXLGGID, sDYDJID);
sSQL.ParamByName("pYZZ").Value = dYZZ;
sSQL.ParamByName("pWHR").Value = tSession.UserName;
sSQL.ParamByName("pWHRID").Value = tSession.UserId;
sSQL.ParamByName("pWHSJ").Value = DateTime.Now;
dberp.ExecSQL(sSQL);
}
}
rrrorNUM++;
}
}
private void FillKeyParams(TSQL sSQL, double dBJSLXX, double dBJSLSX, string sXLXHID, string sXLGGID, string sDYDJID)
{
sSQL.ParamByName("pJGBID").Value = txtJGBID.Value.Trim();
sSQL.ParamByName("pXLXHID").Value = sXLXHID;
sSQL.ParamByName("pXLGGID").Value = sXLGGID.Trim().Equals("") ? " " : sXLGGID;
sSQL.ParamByName("pDYDJID").Value = sDYDJID.Trim().Equals("") ? " " : sDYDJID;
sSQL.ParamByName("pBJSLSX").Value = dBJSLSX;
sSQL.ParamByName("pBJSLXX").Value = dBJSLXX;
sSQL.ParamByName("pYZID").Value = cbxYZID.SelectedValue.Trim();
}
private string GetExistsSQL(double dBJSLXX, double dBJSLSX, string sXLXHID, string sXLGGID, string sDYDJID)
{
string sXLGGID_DB = sXLGGID.Trim().Equals("") ? " " : sXLGGID.Replace("'", "''");
string sDYDJID_DB = sDYDJID.Trim().Equals("") ? " " : sDYDJID.Replace("'", "''");
return string.Format("select 1 from XLXSBJDYZZM where XLXSBJDYZZM_JGBID='{0}' and XLXSBJDYZZM_YZID='{1}' and XLXSBJDYZZM_XLXHID='{2}'"
+ " and XLXSBJDYZZM_XLGGID='{3}' and XLXSBJDYZZM_DYDJID='{4}' and XLXSBJDYZZM_BJSLXX={5} and XLXSBJDYZZM_BJSLSX={6}",
txtJGBID.Value.Trim(), cbxYZID.SelectedValue.Trim(), sXLXHID, sXLGGID_DB, sDYDJID_DB, dBJSLXX, dBJSLSX);
}
//判断同一型号+规格+电压等级+因子的报价数量区间是否与已有记录(非完全相同区间)有交集
private bool ExistsBJSLQJ(double dBJSLXX, double dBJSLSX, string sXLXHID, string sXLGGID, string sDYDJID)
{
string sXLGGID_DB = sXLGGID.Trim().Equals("") ? " " : sXLGGID.Replace("'", "''");
string sDYDJID_DB = sDYDJID.Trim().Equals("") ? " " : sDYDJID.Replace("'", "''");
string sSQL_QJ = string.Format("select 1 from XLXSBJDYZZM where XLXSBJDYZZM_JGBID='{0}' and XLXSBJDYZZM_YZID='{1}' and XLXSBJDYZZM_XLXHID='{2}'"
+ " and XLXSBJDYZZM_XLGGID='{3}' and XLXSBJDYZZM_DYDJID='{4}'"
+ " and not (XLXSBJDYZZM_BJSLXX={5} and XLXSBJDYZZM_BJSLSX={6})"
+ " and (({7} = 0) or XLXSBJDYZZM_BJSLXX < {8})"
+ " and ((XLXSBJDYZZM_BJSLSX = 0) or {9} < XLXSBJDYZZM_BJSLSX)",
txtJGBID.Value.Trim(), cbxYZID.SelectedValue.Trim(), sXLXHID, sXLGGID_DB, sDYDJID_DB, dBJSLXX, dBJSLSX, dBJSLSX, dBJSLSX, dBJSLXX);
return CMISproDataBase.ExistsRecord("DBERP", sSQL_QJ);
}
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", cbxYZID.SelectedItem.Text.Trim());
for (int i = 0; i < 6; i++)
{
if (!ds.Tables[0].Columns[i].ColumnName.Trim().Equals(ColumnNames[i.ToString()].Trim()))
{
throw new Exception("导入文件的内容格式不正确,Excel栏目依次为:型号、规格、电压等级、报价数量下限、报价数量上限、" + cbxYZID.SelectedItem.Text.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("文件读取失败!具体原因:" + sMessage);
}
}
private string sGetCellTest(DataRow Row, int ColumnIndex)
{
return Row[ColumnIndex].ToString().Trim().Replace("\r\n", "").Replace("\n", "");
}
#endregion
}
}