Files
N_XLXSBJ----MX/XLBJD_CLCBInfo.aspx.cs
T
2026-08-21 17:03:02 +08:00

2670 lines
138 KiB
C#
Raw 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.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.Utility;
using GThinking.N_MISPRO;
using GThinking.N_CONTROL;
using GThinking.N_MISPRO.Data;
using GThinking.N_WORKFLOW;
using System.Text;
using System.Collections.Generic;
using GThinking.N_MISPRO.MISPROAS;
namespace GThinking.N_XLXSBJ
{
public partial class XLBJD_CLCBInfo : SingleGridBase
{
XLBJD_CLCB entity = new XLBJD_CLCB();
XLBJD_CLCB_M queryentity = new XLBJD_CLCB_M();
Dictionary<string, string> dicJGBTJYZ = new Dictionary<string, string>();
//报价材料
Dictionary<string, string> dicBJCL = new Dictionary<string, string>();
Dictionary<string, string> dicBJCL_Visible = new Dictionary<string, string>();
Dictionary<string, string> dicBJCL_WL = new Dictionary<string, string>();
//材料物料
Dictionary<string, string> dicCLWL = new Dictionary<string, string>();
// IsTCP / IsLCP 静态缓存,避免循环内反复查库
private static readonly object _tcpLcpLock = new object();
private static Dictionary<string, bool> _tcpCache = new Dictionary<string, bool>();
private static Dictionary<string, bool> _lcpCache = new Dictionary<string, bool>();
#region Page_Load
protected void Page_Load(object sender, EventArgs e)
{
this.UMID = 100860010;
this.UMName = "线缆销售报价单表价";
this.CurMaster = Master;
this.ModuleGV = grdXLBJDMX;
this.CurEntity = entity;
this.CurQueryEntity = queryentity;
this.PageHeight = 500;
this.PageWidth = 700;
this.sQueryURLTarget = "XLBJD_CLCBQuery.aspx";
base.DataKeyNames = new string[] { "XLXSBJDMX_XLXHID", "XLXSBJDMX_XLGGID", "XLXSBJDMX_XLBZID", "XLXSBJDMX_DYDJID", "XLXSBJDMX_XH", "XLXSBJDMX_JSYCBZ" };
this.Master.EnableNewBtn = false;
this.Master.EnableCopyBtn = false;
this.Master.EnableViewBtn = false;
this.Master.EnableEditBtn = false;
this.Master.EnableDeleteBtn = false;
this.Master.EnableAttachBtn = false;
if (!IsPostBack)
{
CurQueryEntity.FieldByName("XSFBJYY").Value = "True";
CurQueryEntity.FieldByName("ZSBJZC").Value = "True";
CurQueryEntity.FieldByName("XSCLCB").Value = "True";
if (XLBJDUtils.IsJGEJGB(PageParam.GetRTrimString("JGBID")))
{
CurQueryEntity.FieldByName("ISJGE").Value = "Y";
}
else
{
CurQueryEntity.FieldByName("ISJGE").Value = "N";
}
}
base.InitPage();
this.ModuleGV.OnClientDblClick = "return false;";
if (!IsPostBack)
{
btnPLTJ.Visible = false;
if (CMISproDataBase.ExistsRecord("DBERP",string.Format("select 1 from XLXSBJFL where XLXSBJFL_BJFLID='{0}' and XLXSBJFL_YXTZJGBYZ='Y' ", PageParam.GetRTrimString("BJFLID"))))
btnPLTJ.Visible = true;
Master_OnStandardQuery(null, null);
}
}
#endregion
#region 模板继承事件
protected override void Master_OnStandardQuery(object sender, EventArgs e)
{
base.InitEntityByCondition();
entity.EntityTable.QuerySelSql = "select top 1 XLXSBJDMX_BJDID from XLXSBJDMX where 1<>1";
base.Master_OnStandardQuery(sender, e);
DataSet ds = GetSQLDataSet();
entity.GridDataBind(grdXLBJDMX, tSession);
entity.GridDataBind(grdXLBJDMX, ds.Tables[0], ds.Tables[0].Rows.Count);
grdXLBJDMX.DataSource = ds;
}
protected override void moduleGV_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
base.InitEntityByCondition();
entity.EntityTable.QuerySelSql = "select top 1 XLXSBJDMX_BJDID from XLXSBJDMX where 1<>1";
grdXLBJDMX.SelectedIndex = -1;
base.moduleGV_PageIndexChanging(sender, e);
DataSet ds = GetSQLDataSet();
entity.GridDataBind(grdXLBJDMX, tSession);
entity.GridDataBind(grdXLBJDMX, ds.Tables[0], ds.Tables[0].Rows.Count);
grdXLBJDMX.DataSource = ds;
}
protected override void moduleGV_RowDataBound(object sender, GridViewRowEventArgs e)
{
InitDic();
if (e.Row.RowType == DataControlRowType.DataRow)
{
int indexFBJYY = grdXLBJDMX.Columns.IndexOf(grdXLBJDMX.FindColumnByFieldName("XLXSBJDMX_JSYCBZ"))+1;
if (indexFBJYY >= 0)
{
if ((e.Row.Cells[indexFBJYY].Text.Trim() != "") && (e.Row.Cells[indexFBJYY].Text.Trim() != "&nbsp;"))
{
e.Row.Cells[indexFBJYY].Text = XLBJD_FBJXQList.GetJSYCXQ(e.Row.Cells[indexFBJYY].Text.Trim(), dicJGBTJYZ);
}
}
}
base.moduleGV_RowDataBound(sender, e);
}
protected override void ReportRecordSetAdd()
{
DataSet ds = GetSQLDataSet();
AddUserReportDataSet("CX_XLXSBJDMX_CLCB", ds);
base.ReportRecordSetAdd();
}
protected override void ReportDataSetAdd()
{
DataSet ds = GetSQLDataSet();
for (int i = 0; i < grdXLBJDMX.Columns.Count; i++)
{
string sDataField = ((System.Web.UI.WebControls.BoundField)(grdXLBJDMX.Columns[i])).DataField.ToString().Trim();
string sHeaderText = grdXLBJDMX.Columns[i].HeaderText;
AddUserReportField("CX_XLXSBJDMX_CLCB", sDataField, sHeaderText, "S");
}
base.ReportDataSetAdd();
}
#endregion
#region 自定义事件
private DataSet GetSQLDataSet()
{
bool bXSCLCB = false;
if (CurQueryEntity.FieldByName("XSCLCB").Value == "True")
{
bXSCLCB = true;
}
while (grdXLBJDMX.Columns.Count > 7)
{
grdXLBJDMX.Columns.RemoveAt(grdXLBJDMX.Columns.Count - 1);
}
DataTable dt1 = new DataTable();
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
Dictionary<string, string> DicJGYWLID = new Dictionary<string, string>();
#region 物料加工原物料ID
TSQL sql = new TSQL(dberp);
sql.Clear();
sql.Add(" select XLXSBJCLWL_WLID,XLXSBJCLWL_JGYWLID ");
sql.Add(" from XLXSBJCLWL ");
sql.Add(" where XLXSBJCLWL_JGYWLID <> '-' ");
DataSet dsWLJGYWL = dberp.OpenDataSet(sql);
if (dsWLJGYWL.Tables[0].Rows.Count > 0)
{
foreach (DataRow trow in dsWLJGYWL.Tables[0].Rows)
{
string sWLID = trow["XLXSBJCLWL_WLID"].ToString().Trim();
string sJGYWLID = trow["XLXSBJCLWL_JGYWLID"].ToString().Trim();
if (!DicJGYWLID.ContainsKey(sWLID))
{
DicJGYWLID.Add(sWLID, sJGYWLID);
}
}
}
#endregion
TSQL SQL = new TSQL(dberp);
StringBuilder strSQL = new StringBuilder();
strSQL.AppendLine(" select XLXSBJDMX_BJDID,XLXSBJDMX_XH,XLXSBJDMX_XSSX, XLXSBJDMX_XLXHID, XLXSBJDMX_XLGGID,XLXSBJDMX_XLBZID, rtrim(XLXSBJDMX_XLBZID)||'|'||rtrim(XLBZ_XLBZLXMC) as XLBZ,XLXSBJDMX_DYDJID,");
strSQL.AppendLine(" XLXSBJDMX_XLYSID,rtrim(XLXSBJDMX_XLYSID)||'|'||rtrim(XLYSB_XLYSMC) as XLYS,XLXSBJDMX_BJCP,XLXSBJDMX_PWQDID,XLXSBJDMX_PWQDWLMC,XLXSBJDMX_PWQDMS,XLXSBJDMX_JLDW,XLXSBJDMX_BJSL,XLXSBJDMX_JGBJJ");
dt1.Columns.Add("XLXSBJDMX_BJDID", typeof(string));
dt1.Columns.Add("XLXSBJDMX_XH", typeof(double));
dt1.Columns.Add("XLXSBJDMX_XSSX", typeof(double));
dt1.Columns.Add("XLXSBJDMX_XLXHID", typeof(string));
dt1.Columns.Add("XLXSBJDMX_XLGGID", typeof(string));
dt1.Columns.Add("XLXSBJDMX_XLBZID", typeof(string));
dt1.Columns.Add("XLBZ", typeof(string));
dt1.Columns.Add("XLXSBJDMX_DYDJID", typeof(string));
dt1.Columns.Add("XLXSBJDMX_XLYSID", typeof(string));
dt1.Columns.Add("XLYS", typeof(string));
dt1.Columns.Add("XLXSBJDMX_BJCP", typeof(string));
XLXSBJPZXX pzxx = XLBJDUtils.GetXLXSBJPZXX(100860000);
if (pzxx.XLXSBJPZ_XSPWQD == "Y")
{
dt1.Columns.Add("XLXSBJDMX_PWQDID", typeof(string));
dt1.Columns.Add("XLXSBJDMX_PWQDWLMC", typeof(string));
dt1.Columns.Add("XLXSBJDMX_PWQDMS", typeof(string));
AddColumn("XLXSBJDMX_PWQDID", "配网清单ID", 100);
AddColumn("XLXSBJDMX_PWQDWLMC", "物料名称", 100);
AddColumn("XLXSBJDMX_PWQDMS", "描述", 100);
}
dt1.Columns.Add("XLXSBJDMX_JGBJJ", typeof(double));
if (PageParam.GetRTrimString("HSBZ").Equals("Y"))
{
AddColumn("XLXSBJDMX_JGBJJ", "含税基价", CMISproConvert.StrToInt(GetOption(100860000, "BJU002"), 5), 80);
}
else
{
AddColumn("XLXSBJDMX_JGBJJ", "无税基价", CMISproConvert.StrToInt(GetOption(100860000, "BJU002"), 5), 80);
}
bool bZSBJZC = CurQueryEntity.FieldByName("ZSBJZC").Value.ToString().Trim().ToUpper().Equals("TRUE");
if (bZSBJZC)
{
strSQL.AppendLine(",round(XLXSBJDJJYZ_YZZ01*100*100/81.2655989526499/71.3980341706337,6) as SCRGF ");
strSQL.AppendLine(",XLXSBJDJJYZ_YZZ01 as TZYZ_JZ01 ");
strSQL.AppendLine(",XLXSBJDJJYZ_YZZ02 as TZYZ_JZ02 ");
strSQL.AppendLine(",XLXSBJDJJYZ_YZZ03 as TZYZ_JZ03 ");
strSQL.AppendLine(",XLXSBJDJJYZ_YZZ04 as TZYZ_JZ04 ");
strSQL.AppendLine(",XLXSBJDJJYZ_YZZ05 as TZYZ_JZ05 ");
strSQL.AppendLine(",XLXSBJDJJYZ_YZZ06 as TZYZ_JZ06 ");
strSQL.AppendLine(",XLXSBJDJJYZ_YZZ07 as TZYZ_JZ07 ");
strSQL.AppendLine(",XLXSBJDJJYZ_YZZ08 as TZYZ_JZ08 ");
strSQL.AppendLine(",XLXSBJDJJYZ_YZZ09 as TZYZ_JZ09 ");
strSQL.AppendLine(",XLXSBJDJJYZ_YZZ10 as TZYZ_JZ10 ");
dt1.Columns.Add("SCRGF", typeof(double));
dt1.Columns.Add("TZYZ_JZ01", typeof(double));
dt1.Columns.Add("TZYZ_JZ02", typeof(double));
dt1.Columns.Add("TZYZ_JZ03", typeof(double));
dt1.Columns.Add("TZYZ_JZ04", typeof(double));
dt1.Columns.Add("TZYZ_JZ05", typeof(double));
dt1.Columns.Add("TZYZ_JZ06", typeof(double));
dt1.Columns.Add("TZYZ_JZ07", typeof(double));
dt1.Columns.Add("TZYZ_JZ08", typeof(double));
dt1.Columns.Add("TZYZ_JZ09", typeof(double));
dt1.Columns.Add("TZYZ_JZ10", typeof(double));
SQL.Clear();
SQL.Add("select XLXSTZYZ_YZID, XLXSTZYZ_YZMC,XLXSTZYZ_JJFS ");
SQL.Add(" from XLXSTZYZ");
SQL.Add(" where XLXSTZYZ_MXBH = 'JZJ' ");
if (!PageParam.GetRTrimString("JGBID").Equals(""))
{
SQL.Add(" and exists(select 1 from XLXSJGBYZ where XLXSJGBYZ_JGBID=:pJGBID and XLXSJGBYZ_YZID=XLXSTZYZ_YZID)");//必须是当前价格表所用的调价因子
SQL.ParamByName("pJGBID").Value = PageParam.GetRTrimString("JGBID");
}
SQL.Add(" order by XLXSTZYZ_XSXH,XLXSTZYZ_YZID ");
DataSet ds = dberp.OpenDataSet(SQL);
AddColumn("SCRGF", "生产人工费", 6, 80);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
string sJJFS = ds.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim();
string sJJ = sJJFS.Equals("JJ") ? "(元)" : (sJJFS.Equals("") ? "" : "(%)");
string sYZMC = ds.Tables[0].Rows[i]["XLXSTZYZ_YZMC"].ToString().Trim() + sJJ;
string sYZID = "TZYZ_" + ds.Tables[0].Rows[i]["XLXSTZYZ_YZID"].ToString().Trim();
int iDecimal = XLBJDUtils.JGBYZZDecimal;
if (sJJFS.Equals("JJ"))
iDecimal = CMISproConvert.StrToInt(GetOption(100860000, "BJU002"), 2);
AddColumn(sYZID, sYZMC, iDecimal, 80);
}
}
strSQL.AppendLine(" ,XLXSBJDMX_JGBBJ ");
dt1.Columns.Add("XLXSBJDMX_JGBBJ", typeof(double));
if (PageParam.GetRTrimString("HSBZ").Equals("Y"))
AddColumn("XLXSBJDMX_JGBBJ", "含税表价", CMISproConvert.StrToInt(GetOption(100860000, "BJU002"), 5), 80);
else
AddColumn("XLXSBJDMX_JGBBJ", "无税表价", CMISproConvert.StrToInt(GetOption(100860000, "BJU002"), 5), 80);
strSQL.AppendLine(" ,XLXSBJDMX_JSYCBZ ");
dt1.Columns.Add("XLXSBJDMX_JSYCBZ", typeof(string));
bool bXSFBJYY = CurQueryEntity.FieldByName("XSFBJYY").Value.ToString().Trim().ToUpper().Equals("TRUE");
if (bXSFBJYY)
{
AddColumn("XLXSBJDMX_JSYCBZ", "负表价原因", 100);
}
Dictionary<string, string> DicBJRCLCBLM = new Dictionary<string, string>();
bool bZSJJZC = CurQueryEntity.FieldByName("ZSJJZC").Value.ToString().Trim().ToUpper().Equals("TRUE");
if (bZSJJZC)
{
#region 不计入成本栏目
if (CMISproDataBase.ExistsRecord("DBERP", "select 1 from XLJGCZBLM where isnull(XLJGCZBLM_BJRCLCB,'N') = 'Y' and isnull(XLJGCZBLM_CLQDL,' ')<>' ' "))
{
SQL.Clear();
SQL.Add(" select BJDLJZSBJRCBLM_XH,BJDLJZSBJRCBLM_BJDCLCBLMH from BJDLJZSBJRCBLM where BJDLJZSBJRCBLM_BJDID = :pBJDID ");
SQL.ParamByName("pBJDID").Value = PageParam.GetRTrimString("BJDID").Trim();
DataSet dsJRCBLM = dberp.OpenDataSet(SQL);
if (dsJRCBLM.Tables[0].Rows.Count > 0)
{
foreach (DataRow trow in dsJRCBLM.Tables[0].Rows)
{
string sKey = trow["BJDLJZSBJRCBLM_XH"].ToString().Trim() + "," + trow["BJDLJZSBJRCBLM_BJDCLCBLMH"].ToString().Trim();
if (!DicBJRCLCBLM.ContainsKey(sKey))
DicBJRCLCBLM.Add(sKey, sKey);
}
}
}
#endregion
strSQL.AppendLine(" ,'"+GetOption(100860000,"BJU003")+"' as JLDW ");
dt1.Columns.Add("JLDW", typeof(string));
AddColumn("JLDW", "计量单位", 80);
strSQL.AppendLine(" ,0 as CLZL ");
dt1.Columns.Add("CLZL", typeof(double));
AddColumn("CLZL", "材料重量",3, 80);
int iDecimal = CMISproConvert.StrToInt(GetOption(100860000, "BJU002"), 2);
//构建物料信息字典
if (dicCLWL.Count <= 0)
{
SQL.Clear();
SQL.Add(" select WL_WLID,WL_MC,WL_GG ");
SQL.Add(" from XLXSBJCLWL ");
SQL.Add(" left join WL on XLXSBJCLWL_WLID = WL_WLID ");
SQL.Add(" where 1=1 ");
SQL.Add(" order by XLXSBJCLWL_WLID ");
DataSet dsWL = dberp.OpenDataSet(SQL);
foreach (DataRow wlRow in dsWL.Tables[0].Rows)
{
string sWLID = wlRow["WL_WLID"].ToString().Trim().Replace("-", "_").Replace("(", "(").Replace(")", ")").Replace(")", "").Replace("(", "");
string sWLXX = wlRow["WL_MC"].ToString().Trim() + " " + wlRow["WL_GG"].ToString().Trim();
if (!dicCLWL.ContainsKey(sWLID))
{
dicCLWL.Add(sWLID, sWLXX);
}
}
}
if (dicBJCL_WL.Count <= 0)
{
SQL.Clear();
SQL.Add(" select distinct XLXSBJCL_BJCLID,XLXSBJCL_BJCLMC ");
SQL.Add(" from XLXSBJCL ");
SQL.Add(" where 1=1 ");
//此处需要注意保存的dicBJCLCloums_Index不一定能囊括所有列,所有直接查询80列
//SQL.Add(" and (");
//for (int i = 1; i <= 80; i++)
//{
// if (i != 1)
// SQL.Add(" or ");
// SQL.Add(" exists ( select top 1 XLXSBJDCLCB_XH from XLXSBJDCLCB where XLXSBJDCLCB_BJDID =:pBJDID ");
// SQL.Add(string.Format(" and charindex('|',XLXSBJDCLCB_CLID{0}) > 0 and case when charindex('|',XLXSBJDCLCB_CLID{0}) > 0 then left(XLXSBJDCLCB_CLID{0},charindex('|',XLXSBJDCLCB_CLID{0})-1) else XLXSBJDCLCB_CLID{0} end = XLXSBJCL_BJCLID ) ", i.ToString().PadLeft(2, '0').Trim()));
//}
//SQL.Add(" ) ");
SQL.Add(" and exists ( select top 1 XLXSBJDCLCB_XH from XLXSBJDCLCB where XLXSBJDCLCB_BJDID =:pBJDID ");
SQL.Add(" and (");
for (int i = 1; i <= 80; i++)
{
if (i != 1)
SQL.Add(" or ");
SQL.Add(string.Format(" XLXSBJDCLCB_CLID{0} like rtrim(XLXSBJCL_BJCLID)||'|%'", i.ToString().PadLeft(2, '0')));
}
SQL.Add(" ) ");
SQL.Add(" ) ");
SQL.Add(" order by XLXSBJCL_BJCLID ");
SQL.ParamByName("pBJDID").Value = PageParam.GetRTrimString("BJDID").Trim();
DataSet dsBJCL_WL = dberp.OpenDataSet(SQL);
foreach (DataRow bjclRow in dsBJCL_WL.Tables[0].Rows)
{
string sBJCLID = bjclRow["XLXSBJCL_BJCLID"].ToString().Trim().Replace("-", "_").Replace("(", "(").Replace(")", ")").Replace(")", "").Replace("(", "");
string sBJCLMC = bjclRow["XLXSBJCL_BJCLMC"].ToString().Trim();
if (!dicBJCL_WL.ContainsKey(sBJCLID))
{
dicBJCL_WL.Add(sBJCLID, sBJCLMC);
}
}
}
//报价材料是否显示
dicBJCL_Visible.Clear();
//构建报价材料字典和查询列
if (dicBJCL.Count > 0)
{
foreach (string sBJCLID in dicBJCL.Keys)
{
dicBJCL_Visible.Add(sBJCLID, "N");
string sBJCLMC = dicBJCL[sBJCLID];
strSQL.AppendLine(" ,0 as " + sBJCLID + "_SL ");
dt1.Columns.Add(sBJCLID + "_SL", typeof(string));
AddColumn(sBJCLID + "_SL", sBJCLMC,6, 60);
if (dicBJCL_WL.ContainsKey(sBJCLID))
{
strSQL.AppendLine(" ,' ' as " + sBJCLID + "_WLXX ");
strSQL.AppendLine(" ,0 as " + sBJCLID + "_WLJG ");
strSQL.AppendLine(" ,0 as " + sBJCLID + "_WLCB ");
dt1.Columns.Add(sBJCLID + "_WLXX", typeof(string));
dt1.Columns.Add(sBJCLID + "_WLJG", typeof(double));
dt1.Columns.Add(sBJCLID + "_WLCB", typeof(double));
AddColumn(sBJCLID + "_WLXX", "材料物料", 80);
AddColumn(sBJCLID + "_WLJG", "物料价格(元/Kg)",XLBJDUtils.BJCLPriceDecimal, 60);
if (bXSCLCB)
AddColumn(sBJCLID + "_WLCB", "物料成本", iDecimal, 60);
}
else
{
strSQL.AppendLine(" ,' ' as " + sBJCLID + "_CLJG ");
strSQL.AppendLine(" ,0 as " + sBJCLID + "_CLCB ");
dt1.Columns.Add(sBJCLID + "_CLJG", typeof(double));
dt1.Columns.Add(sBJCLID + "_CLCB", typeof(double));
AddColumn(sBJCLID + "_CLJG", "材料价格(元/Kg)", XLBJDUtils.BJCLPriceDecimal, 60);
if (bXSCLCB)
AddColumn(sBJCLID + "_CLCB", "材料成本", iDecimal, 60);
}
}
}
else
{
SQL.Clear();
SQL.Add(" select distinct XLXSBJCL_BJCLID,XLXSBJCL_BJCLMC ");
SQL.Add(" from XLXSBJCL ");
SQL.Add(" where 1=1 ");
//此处需要注意保存的dicBJCLCloums_Index不一定能囊括所有列,所有直接查询80列
//SQL.Add(" and ( ");
//for (int i = 1; i <= 80; i++)
//{
// if (i != 1)
// SQL.Add(" or ");
// SQL.Add(" exists ( select top 1 XLXSBJDCLCB_XH from XLXSBJDCLCB where XLXSBJDCLCB_BJDID =:pBJDID ");
// SQL.Add(string.Format(" and case when charindex('|',XLXSBJDCLCB_CLID{0}) > 0 then left(XLXSBJDCLCB_CLID{0},charindex('|',XLXSBJDCLCB_CLID{0})-1) else XLXSBJDCLCB_CLID{0} end = XLXSBJCL_BJCLID ) ", i.ToString().PadLeft(2, '0').Trim()));
//}
//SQL.Add(" ) ");
SQL.Add(" and exists ( select top 1 XLXSBJDCLCB_XH from XLXSBJDCLCB where XLXSBJDCLCB_BJDID =:pBJDID ");
SQL.Add(" and (");
for (int i = 1; i <= 80; i++)
{
if (i != 1)
SQL.Add(" or ");
SQL.Add(string.Format(" XLXSBJDCLCB_CLID{0} like rtrim(XLXSBJCL_BJCLID)||'%'", i.ToString().PadLeft(2, '0')));
}
SQL.Add(" ) ");
SQL.Add(" ) ");
SQL.Add(" order by XLXSBJCL_BJCLID ");
SQL.ParamByName("pBJDID").Value = PageParam.GetRTrimString("BJDID").Trim();
DataSet dsBJCL = dberp.OpenDataSet(SQL);
foreach (DataRow bjclRow in dsBJCL.Tables[0].Rows)
{
string sBJCLID = bjclRow["XLXSBJCL_BJCLID"].ToString().Trim().Replace("-", "_").Replace("(", "(").Replace(")", ")").Replace(")", "").Replace("(", "");
string sBJCLMC = bjclRow["XLXSBJCL_BJCLMC"].ToString().Trim();
if (!dicBJCL.ContainsKey(sBJCLID))
{
dicBJCL.Add(sBJCLID, sBJCLMC);
dicBJCL_Visible.Add(sBJCLID, "N");
strSQL.AppendLine(" ,0 as " + sBJCLID + "_SL ");
dt1.Columns.Add(sBJCLID + "_SL", typeof(string));
AddColumn(sBJCLID + "_SL", sBJCLMC,6, 60);
if (dicBJCL_WL.ContainsKey(sBJCLID))
{
strSQL.AppendLine(" ,' ' as " + sBJCLID + "_WLXX ");
strSQL.AppendLine(" ,0 as " + sBJCLID + "_WLJG ");
strSQL.AppendLine(" ,0 as " + sBJCLID + "_WLCB ");
dt1.Columns.Add(sBJCLID + "_WLXX", typeof(string));
dt1.Columns.Add(sBJCLID + "_WLJG", typeof(double));
dt1.Columns.Add(sBJCLID + "_WLCB", typeof(double));
AddColumn(sBJCLID + "_WLXX", "材料物料", 80);
AddColumn(sBJCLID + "_WLJG", "物料价格(元/Kg)", XLBJDUtils.BJCLPriceDecimal, 60);
if (bXSCLCB)
AddColumn(sBJCLID + "_WLCB", "物料成本", iDecimal, 60);
}
else
{
strSQL.AppendLine(" ,' ' as " + sBJCLID + "_CLJG ");
strSQL.AppendLine(" ,0 as " + sBJCLID + "_CLCB ");
dt1.Columns.Add(sBJCLID + "_CLJG", typeof(double));
dt1.Columns.Add(sBJCLID + "_CLCB", typeof(double));
AddColumn(sBJCLID + "_CLJG", "材料价格(元/Kg)", XLBJDUtils.BJCLPriceDecimal, 60);
if (bXSCLCB)
AddColumn(sBJCLID + "_CLCB", "材料成本", iDecimal, 60);
}
}
}
}
for (int i = 1; i <= 80; i++)
{
strSQL.AppendLine(string.Format(" ,XLXSBJDCLCB_CLSL{0},XLXSBJDCLCB_CLID{0},XLXSBJDCLCB_CLDJ{0} ", i.ToString().PadLeft(2, '0').Trim()));
}
}
bool bZSGYBZ = CurQueryEntity.FieldByName("GYBZ").Value.ToString().Trim().ToUpper().Equals("TRUE");
if (bZSGYBZ)
{
AddColumn("XLXSBJYLZDMX_GYBZ", "工艺备注", 100);
strSQL.AppendLine(" ,XLXSBJYLZDMX_GYBZ ");
dt1.Columns.Add("XLXSBJYLZDMX_GYBZ", typeof(string));
}
//栏目超限省略符号
strSQL.AppendLine(" ,'...' as LMCXSLF ");
dt1.Columns.Add("LMCXSLF", typeof(string));
strSQL.AppendLine(" from XLXSBJDMX ");
strSQL.AppendLine(" left join XLBZ on XLBZ_XLBZID = XLXSBJDMX_XLBZID ");
strSQL.AppendLine(" left join XLYSB on XLYSB_XLYSID = XLXSBJDMX_XLYSID ");
if (bZSBJZC)
{
strSQL.AppendLine(" left join XLXSBJDJJYZ on XLXSBJDJJYZ_BJDID=XLXSBJDMX_BJDID and XLXSBJDJJYZ_XH=XLXSBJDMX_XH ");
}
if (bZSJJZC)
{
strSQL.AppendLine(" left join XLXSBJDCLCB on XLXSBJDCLCB_BJDID=XLXSBJDMX_BJDID and XLXSBJDCLCB_XH=XLXSBJDMX_XH ");
}
if (bZSGYBZ)
{
strSQL.AppendLine(" left join ( select XLXSBJYLZD_BJDID,XLXSBJYLZD_SQDH,XLXSBJYLZDMX_BJDXH,XLXSBJYLZDMX_GYBZ ");
strSQL.AppendLine(" from XLXSBJYLZDMX left join XLXSBJYLZD on XLXSBJYLZD_SQDH = XLXSBJYLZDMX_SQDH where XLXSBJYLZD_BJDID = :pBJDID ) YLZDMX on XLXSBJYLZD_BJDID = XLXSBJDMX_BJDID and XLXSBJYLZDMX_BJDXH = XLXSBJDMX_XH ");
}
strSQL.AppendLine(" where 1=1 and XLXSBJDMX_BJDID = :pBJDID ");
strSQL.AppendLine(" order by XLXSBJDMX_XSSX,XLXSBJDMX_XH ");
SQL.Clear();
SQL.Add(strSQL.ToString().Trim());
SQL.ParamByName("pBJDID").Value = PageParam.GetRTrimString("BJDID").Trim();
DataSet dsQry = dberp.OpenDataSet(SQL);
if (dsQry.Tables[0].Rows.Count > 0)
{
foreach (DataRow towQry in dsQry.Tables[0].Rows)
{
DataRow dtrow = dt1.NewRow();
dtrow["XLXSBJDMX_BJDID"] = towQry["XLXSBJDMX_BJDID"].ToString().Trim();
string sXH = towQry["XLXSBJDMX_XH"].ToString().Trim();
dtrow["XLXSBJDMX_XH"] = CMISproConvert.StrToFloat(towQry["XLXSBJDMX_XH"].ToString().Trim());
dtrow["XLXSBJDMX_XSSX"] = CMISproConvert.StrToFloat(towQry["XLXSBJDMX_XSSX"].ToString().Trim());
dtrow["XLXSBJDMX_XLXHID"] = towQry["XLXSBJDMX_XLXHID"].ToString().Trim();
dtrow["XLXSBJDMX_XLGGID"] = towQry["XLXSBJDMX_XLGGID"].ToString().Trim();
dtrow["XLXSBJDMX_XLBZID"] = towQry["XLXSBJDMX_XLBZID"].ToString().Trim();
dtrow["XLBZ"] = towQry["XLBZ"].ToString().Trim();
dtrow["XLXSBJDMX_DYDJID"] = towQry["XLXSBJDMX_DYDJID"].ToString().Trim();
dtrow["XLXSBJDMX_XLYSID"] = towQry["XLXSBJDMX_XLYSID"].ToString().Trim();
dtrow["XLYS"] = towQry["XLYS"].ToString().Trim();
dtrow["XLXSBJDMX_BJCP"] = towQry["XLXSBJDMX_BJCP"].ToString().Trim();
if (pzxx.XLXSBJPZ_XSPWQD == "Y")
{
dtrow["XLXSBJDMX_PWQDID"] = towQry["XLXSBJDMX_PWQDID"].ToString().Trim();
dtrow["XLXSBJDMX_PWQDWLMC"] = towQry["XLXSBJDMX_PWQDWLMC"].ToString().Trim();
dtrow["XLXSBJDMX_PWQDMS"] = towQry["XLXSBJDMX_PWQDMS"].ToString().Trim();
}
dtrow["XLXSBJDMX_JGBJJ"] = CMISproConvert.StrToFloat(towQry["XLXSBJDMX_JGBJJ"].ToString().Trim());
dtrow["LMCXSLF"] = towQry["LMCXSLF"].ToString().Trim();
if (bZSBJZC)
{
dtrow["SCRGF"] = CMISproConvert.StrToFloat(towQry["SCRGF"].ToString().Trim());
dtrow["TZYZ_JZ01"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ01"].ToString().Trim());
dtrow["TZYZ_JZ02"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ02"].ToString().Trim());
dtrow["TZYZ_JZ03"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ03"].ToString().Trim());
dtrow["TZYZ_JZ04"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ04"].ToString().Trim());
dtrow["TZYZ_JZ05"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ05"].ToString().Trim());
dtrow["TZYZ_JZ06"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ06"].ToString().Trim());
dtrow["TZYZ_JZ07"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ07"].ToString().Trim());
dtrow["TZYZ_JZ08"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ08"].ToString().Trim());
dtrow["TZYZ_JZ09"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ09"].ToString().Trim());
dtrow["TZYZ_JZ10"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ10"].ToString().Trim());
}
if (bXSFBJYY)
{
dtrow["XLXSBJDMX_JSYCBZ"] = towQry["XLXSBJDMX_JSYCBZ"].ToString().Trim();
}
dtrow["XLXSBJDMX_JGBBJ"] = CMISproConvert.StrToFloat(towQry["XLXSBJDMX_JGBBJ"].ToString().Trim());
if (bZSJJZC)
{
dtrow["JLDW"] = towQry["JLDW"].ToString().Trim();
double dCLZL = 0;
for (int i = 1; i <= 80; i++)
{
string sBJRCBLMKey = sXH + "," + i.ToString().PadLeft(2, '0');
string sCLID = towQry["XLXSBJDCLCB_CLID" + i.ToString().PadLeft(2, '0').Trim()].ToString().Trim().Replace("-", "_").Replace("(", "(").Replace(")", ")").Replace(")", "").Replace("(", "");
if (sCLID.Contains("|"))
{
string sWLID = sCLID.Split('|')[1];
if (DicJGYWLID.ContainsKey(sWLID))
sWLID = DicJGYWLID[sWLID];
sCLID = sCLID.Split('|')[0];
if (dicBJCL.ContainsKey(sCLID))
{
double dSL = CMISproConvert.StrToFloat(towQry["XLXSBJDCLCB_CLSL" + i.ToString().PadLeft(2, '0').Trim()].ToString().Trim());
double dJG = CMISproConvert.StrToFloat(towQry["XLXSBJDCLCB_CLDJ" + i.ToString().PadLeft(2, '0').Trim()].ToString().Trim());
if (dSL != 0)
dicBJCL_Visible[sCLID] = "Y";
dtrow[sCLID + "_SL"] = CMISproConvert.StrToFloat(dtrow[sCLID + "_SL"].ToString(), 0.0) + dSL;//相同栏目的用量要合并
if (dicCLWL.ContainsKey(sWLID))
{
if (dtrow[sCLID + "_WLXX"].ToString().Trim().Equals(""))
{
dtrow[sCLID + "_WLXX"] = sWLID + "|" + dicCLWL[sWLID];
}
else
{
if (!dtrow[sCLID + "_WLXX"].ToString().Trim().Contains(sWLID + "|" + dicCLWL[sWLID]))
{
dtrow[sCLID + "_WLXX"] = dtrow[sCLID + "_WLXX"].ToString().Trim() + "...";
}
}
}
else
{
if (dtrow[sCLID + "_WLXX"].ToString().Trim().Equals(""))
{
dtrow[sCLID + "_WLXX"] = sWLID;
}
else
{
if (!dtrow[sCLID + "_WLXX"].ToString().Trim().Contains(sWLID) || (sWLID.Equals("") && !dtrow[sCLID + "_WLXX"].ToString().Trim().Equals("")))
{
dtrow[sCLID + "_WLXX"] = dtrow[sCLID + "_WLXX"].ToString().Trim() + "...";
}
}
}
if (dtrow[sCLID + "_WLXX"].ToString().EndsWith("..."))
dtrow[sCLID + "_WLJG"] = 0;
else
dtrow[sCLID + "_WLJG"] = dJG;
dtrow[sCLID + "_WLCB"] = CMISproConvert.StrToFloat(dtrow[sCLID + "_WLCB"].ToString(), 0.0) + dJG * dSL;
if (DicBJRCLCBLM.ContainsKey(sBJRCBLMKey))
dtrow[sCLID + "_WLCB"] = 0;
dCLZL += dSL;
}
}
else
{
if (dicBJCL.ContainsKey(sCLID))
{
double dSL = CMISproConvert.StrToFloat(towQry["XLXSBJDCLCB_CLSL" + i.ToString().PadLeft(2, '0').Trim()].ToString().Trim());
double dJG = CMISproConvert.StrToFloat(towQry["XLXSBJDCLCB_CLDJ" + i.ToString().PadLeft(2, '0').Trim()].ToString().Trim());
if (dSL != 0)
dicBJCL_Visible[sCLID] = "Y";
dtrow[sCLID + "_SL"] = CMISproConvert.StrToFloat(dtrow[sCLID + "_SL"].ToString(), 0.0) + dSL;//相同栏目的用量要合并
dtrow[sCLID + "_CLJG"] = dJG;
dtrow[sCLID + "_CLCB"] = dJG * CMISproConvert.StrToFloat(dtrow[sCLID + "_SL"].ToString(), 0.0);
if (DicBJRCLCBLM.ContainsKey(sBJRCBLMKey))
dtrow[sCLID + "_CLCB"] = 0;
dCLZL += dSL;
}
}
}
dtrow["CLZL"] = dCLZL;
}
if (bZSGYBZ)
{
dtrow["XLXSBJYLZDMX_GYBZ"] = towQry["XLXSBJYLZDMX_GYBZ"].ToString().Trim();
}
dt1.Rows.Add(dtrow);
}
}
foreach (string sBJCLID in dicBJCL_Visible.Keys)
{
if (dicBJCL_Visible[sBJCLID].Equals("N"))//不显示的栏目需要删除,否则记录导出时会因为最大栏目数256的限制导致栏目导出不全
{
grdXLBJDMX.Columns.Remove(grdXLBJDMX.FindColumnByFieldName(sBJCLID + "_SL"));
if (dt1.Columns.Contains(sBJCLID + "_SL"))
dt1.Columns.Remove(sBJCLID + "_SL");
if (dicBJCL_WL.ContainsKey(sBJCLID))
{
grdXLBJDMX.Columns.Remove(grdXLBJDMX.FindColumnByFieldName(sBJCLID + "_WLXX"));
grdXLBJDMX.Columns.Remove(grdXLBJDMX.FindColumnByFieldName(sBJCLID + "_WLJG"));
grdXLBJDMX.Columns.Remove(grdXLBJDMX.FindColumnByFieldName(sBJCLID + "_WLCB"));
if (dt1.Columns.Contains(sBJCLID + "_WLXX"))
dt1.Columns.Remove(sBJCLID + "_WLXX");
if (dt1.Columns.Contains(sBJCLID + "_WLJG"))
dt1.Columns.Remove(sBJCLID + "_WLJG");
if (dt1.Columns.Contains(sBJCLID + "_WLCB"))
dt1.Columns.Remove(sBJCLID + "_WLCB");
}
else
{
grdXLBJDMX.Columns.Remove(grdXLBJDMX.FindColumnByFieldName(sBJCLID + "_CLJG"));
grdXLBJDMX.Columns.Remove(grdXLBJDMX.FindColumnByFieldName(sBJCLID + "_CLCB"));
if (dt1.Columns.Contains(sBJCLID + "_CLJG"))
dt1.Columns.Remove(sBJCLID + "_CLJG");
if (dt1.Columns.Contains(sBJCLID + "_CLCB"))
dt1.Columns.Remove(sBJCLID + "_CLCB");
}
}
}
if (grdXLBJDMX.Columns.Count > 450)
{
for (int i = grdXLBJDMX.Columns.Count - 1; i >= 449; i--)
{
grdXLBJDMX.Columns.Remove(grdXLBJDMX.Columns[i]);
}
AddColumn("LMCXSLF", "...", 60, HorizontalAlign.Center);
}
DataSet dsResult = new DataSet();
dsResult.Tables.Add(dt1);
return dsResult;
}
private void InitDic()
{
if (dicJGBTJYZ.Count > 0)
return;
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
SQL.Add(" select XLXSTZYZ_YZID,XLXSTZYZ_YZMC from XLXSTZYZ where XLXSTZYZ_MXBH = 'JZJ' ");
DataSet ds = dberp.OpenDataSet(SQL);
if (ds.Tables[0].Rows.Count > 0)
{
foreach (DataRow trow in ds.Tables[0].Rows)
{
dicJGBTJYZ.Add(trow["XLXSTZYZ_YZID"].ToString().Trim(), trow["XLXSTZYZ_YZMC"].ToString().Trim());
}
}
}
private void PLTJ_JGBYZ(string sBJDID,string sBJFLID,string sJGBID, string sBJDXHList, int VnewID, string sYZID,double YZZ)
{//研发自测:王威 2026/01/07 00:21:36
BJFLXX bjflxx = XLBJDUtils.GetBJFLXX(sBJFLID);
TZYZXX yzxx = XLBJDUtils.GetYZXXByYZID(sYZID);
string sTJYS = yzxx.XLXSTZYZ_TJYS;
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
SQL.Add("select XLXSBJD_JGBID,XLXSJGB_MXBH,XLXSJGB_JGBIDS,XLXSJGB_JGCIDS,XLXSJGB_BJLY,XLXSJGB_TJYS,XLXSJGB_JSBLFS, ");
SQL.Add(" XLXSBJD_BJFLID,XLXSBJFL_BJDHQLY,XLXSBJFL_TZCLHQ,XLXSBJFL_JGBTJYSS,XLXSBJFL_BJJCLLX,XLXSBJFL_LJJCLLX,XLXSBJFL_CPBJMRXSWS,");
SQL.Add(" XLXSBJFL_ZDXJJCLLX,XLXSBJFL_JYF,XLXSBJFL_YFWLID,XLXSBJFL_BJHYF,XLXSBJFL_ZDXJGS,XLXSBJFL_JSJGS,XLXSBJFL_TZYLBL,");
SQL.Add(" XLXSBJD_JZBJHS,XLXSBJD_BJRQ");
SQL.Add(" from XLXSBJD ");
SQL.Add(" left join XLXSJGB on XLXSJGB_JGBID=XLXSBJD_JGBID ");
SQL.Add(" left join XLXSBJFL on XLXSBJFL_BJFLID=XLXSBJD_BJFLID");
SQL.Add(" where XLXSBJD_BJDID=:pBJDID");
SQL.ParamByName("pBJDID").Value = sBJDID;
DataSet dsBJD = dberp.OpenDataSet(SQL);
if (dsBJD.Tables[0].Rows.Count == 0)
{
return;
}
string sMXBH = dsBJD.Tables[0].Rows[0]["XLXSJGB_MXBH"].ToString().Trim();
string sJGBIDS = dsBJD.Tables[0].Rows[0]["XLXSJGB_JGBIDS"].ToString().Trim();
string sJGCIDS = dsBJD.Tables[0].Rows[0]["XLXSJGB_JGCIDS"].ToString().Trim();
string sBJLY = dsBJD.Tables[0].Rows[0]["XLXSJGB_BJLY"].ToString().Trim();
string sJSBLFS = dsBJD.Tables[0].Rows[0]["XLXSJGB_JSBLFS"].ToString().Trim();
bool bHSBZ = dsBJD.Tables[0].Rows[0]["XLXSBJD_JZBJHS"].ToString().Trim().Equals("Y");
string sBJU002=GetOption(100860000,"BJU002");
int iXSWS = string.IsNullOrEmpty(sBJU002) ? 5 : CMISproConvert.StrToInt(sBJU002);
if (iXSWS < 0)
iXSWS = 0;
else if (iXSWS > 8)
iXSWS = 8;
int VID = CMISproDataBase.NewID("DBERP", "V_XSBJJSJGB");
DateTime TimeStamp = MISproUtils.GetServerTime();
dberp.BeginTrans();
try
{
SQL.Clear();
SQL.Add(string.Format(" update XLXSBJDJJYZ set XLXSBJDJJYZ_YZZ{0}=:pYZZ", sYZID.Replace("JZ", "")));
SQL.Add(" where XLXSBJDJJYZ_BJDID=:pBJDID ");
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID=:pID and XLXSBJDJJYZ_BJDID=V_BJDXH_BJDID and XLXSBJDJJYZ_XH=V_BJDXH_BJDXH)");
SQL.ParamByName("pID").Value = VnewID;
}
else if (!string.IsNullOrEmpty(sBJDXHList))
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDJJYZ_XH", sBJDXHList));
SQL.ParamByName("pBJDID").Value = sBJDID;
SQL.ParamByName("pYZZ").Value = YZZ;
dberp.ExecSQL(SQL);
//构建待计算临时表
SQL.Clear();
SQL.Add("insert into V_XSBJJSJGB(V_XSBJJSJGB_ID,V_XSBJJSJGB_TIMESTAMP,V_XSBJJSJGB_BJDID,V_XSBJJSJGB_BJDXH,V_XSBJJSJGB_JGBJJ,V_XSBJJSJGB_JGBJLDW) ");
SQL.Add("select :pID,:pTime,XLXSBJDMX_BJDID,XLXSBJDMX_XH,XLXSBJDMX_JGBJJ,XLXSBJDMX_JLDW ");
SQL.Add(" from XLXSBJDMX");
SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID");
if (VnewID > 0)
{
SQL.Add(" and exists(select 1 from V_BJDXH where V_BJDXH_ID=:pID and XLXSBJDMX_BJDID=V_BJDXH_BJDID and XLXSBJDMX_XH=V_BJDXH_BJDXH)");
SQL.ParamByName("pID").Value = VnewID;
}
else if (!string.IsNullOrEmpty(sBJDXHList))
SQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJDMX_XH", sBJDXHList));
SQL.ParamByName("pID").Value = VID;
SQL.ParamByName("pTime").Value = TimeStamp;
SQL.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
DataSet dsJGBYZ = new DataSet();
XLBJDUtils.GetdsJGBYZ_JGE(sJGBID, ref dsJGBYZ);
if (dsJGBYZ.Tables[0].Rows.Count > 0)
{
CalcUpdateJGBBJ(dberp, SQL, dsJGBYZ, VID, sBJDID, sBJFLID, sMXBH, sJGBID, iXSWS, sJSBLFS, tSession.UserId, tSession.UserName, sJGBIDS);
SQL.Clear();
SQL.Add("merge into XLXSBJDMX tar ");
SQL.Add("using(select V_XSBJJSJGB_BJDXH,V_XSBJJSJGB_JGBBJ from V_XSBJJSJGB where V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID ");
SQL.Add(" )sor ");
SQL.Add(" on (XLXSBJDMX_BJDID=:pBJDID and XLXSBJDMX_XH=V_XSBJJSJGB_BJDXH)");
SQL.Add(" when matched then update set XLXSBJDMX_JGBBJ=V_XSBJJSJGB_JGBBJ ");
SQL.ParamByName("pID").Value = VID;
SQL.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
SQL.Clear();
SQL.Add("merge into XLXSBJDCLCB tar ");
SQL.Add("using(select V_XSBJJSJGB_BJDXH,V_XSBJJSJGB_JGBBJ,(select max(XLXSBJCL_ZZSL) as ZZSL from XLXSBJCL where 1=1) as ZZSL from V_XSBJJSJGB where V_XSBJJSJGB_ID=:pID and V_XSBJJSJGB_BJDID=:pBJDID ");
SQL.Add(" )sor ");
SQL.Add(" on (XLXSBJDCLCB_BJDID=:pBJDID and XLXSBJDCLCB_XH=V_XSBJJSJGB_BJDXH)");
SQL.Add(" when matched then update set ");
if (bHSBZ)
{
SQL.Add(" XLXSBJDCLCB_HSJGBBJ=V_XSBJJSJGB_JGBBJ,XLXSBJDCLCB_WSJGBBJ=V_XSBJJSJGB_JGBBJ/(1+isnull(ZZSL,0.0)/100.0) ");
}else
SQL.Add(" XLXSBJDCLCB_HSJGBBJ=V_XSBJJSJGB_JGBBJ*(1+isnull(ZZSL,0.0)/100.0),XLXSBJDCLCB_WSJGBBJ=V_XSBJJSJGB_JGBBJ ");
//SQL.ParamByName("pZZSL").Value = 13;
SQL.ParamByName("pID").Value = VID;
SQL.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
XLBJDUtils.UpdateBJDMX(dberp, SQL, sBJFLID, sBJDID, iXSWS, bjflxx.XLXSBJFL_BJJCLLX, bjflxx.XLXSBJFL_LJJCLLX, bjflxx.XLXSBJFL_CPBJMRXSWS, sBJDXHList, 0, false, false, false, "", DateTime.MinValue, false, VnewID);
XLBJDUtils.UpdateZDXJGS(dberp, SQL, sBJDID, sBJFLID, sBJU002, "", 0);
XLBJDUtils.UpdateJSJGS(dberp, SQL, sBJDID, sBJFLID, sBJU002, "", 0);
XLBJDUtils.UpdateXLXSBJD(dberp, SQL, sBJDID, bjflxx.XLXSBJFL_BJJCLLX, bjflxx.XLXSBJFL_LJJCLLX, bjflxx.XLXSBJFL_ZDXJJCLLX, bjflxx.XLXSBJFL_JYF, "", "", bjflxx.XLXSBJFL_YFWLID, bjflxx.XLXSBJFL_BJHYF);
}
dberp.CommitTrans();
}
catch(Exception ex)
{
dberp.RollbackTrans();
ShowMessage("批量调价失败:"+ex.Message);
}
finally
{
//删除计算临时表
SQL.Clear();
SQL.Add("delete from V_XSBJJSJGB ");
SQL.Add(" where V_XSBJJSJGB_ID=:pID");
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID");
SQL.ParamByName("pID").Value = VID;
SQL.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
}
}
#endregion
#region 控件事件
protected void btnPLTJ_OnDropDown(object sender, EventArgs e)
{//研发自测:王威 2026/01/07 00:21:13
btnPLTJ.Nodes.Clear();
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
DataSet ds = null;
SQL.Clear();
SQL.Add("select XLXSJGBYZ_YZID,XLXSTZYZ_YZMC,XLXSTZYZ_JJFS,XLXSTZYZ_TJYS ");
SQL.Add(" from XLXSJGBYZ");
SQL.Add(" left join XLXSTZYZ on XLXSTZYZ_MXBH='JZJ' and XLXSTZYZ_YZID=XLXSJGBYZ_YZID ");
SQL.Add(" where XLXSJGBYZ_JGBID=:pJGBID and XLXSTZYZ_TJYS not in('2','5','6') ");
SQL.Add(" order by XLXSTZYZ_XSXH,XLXSTZYZ_YZID");
SQL.ParamByName("pJGBID").Value = PageParam.GetRTrimString("JGBID");
ds = dberp.OpenDataSet(SQL);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
string sYZID = ds.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim();
string sYZMC = ds.Tables[0].Rows[i]["XLXSTZYZ_YZMC"].ToString().Trim();
string sJJFS = ds.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim();
string sTJYS = ds.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim();
string sYZIDChild = sYZID;
string sText = sYZMC;
if (sJJFS.Equals("JD") || sJJFS.Equals("KD") || sJJFS.Equals("SX") || sJJFS.Equals("DD") || sJJFS.Equals("MD"))
{
sText = sText + "(%)";
}
else if (sJJFS.Equals("JJ"))
{
if (XLBJDUtils.GetYZXXByYZID(sYZID).XLXSTZYZ_TJLX == "1")
sText = sText + "(元)";
}
btnPLTJ.Nodes.Add(new gtTreeNode(sYZID, sText));
}
MenuAreaUpdate();
}
protected void btnPLTJ_MenuItemClick(object sender, string ItemIndex)
{//研发自测:王威 2026/01/07 00:21:23
string sYZID = ItemIndex;
string sText =btnPLTJ.Nodes.getTreeNodeByValue(sYZID).Text;
if (!(grdXLBJDMX.CheckBox && !String.IsNullOrEmpty(grdXLBJDMX.CheckedRowIndexs)))
txtPLSZAll.Value = "C";
else
txtPLSZAll.Value = "N";
txtPLSZYZList.Value = "";
string sBJFLID = PageParam.GetRTrimString("BJFLID");
string sBJDID = PageParam.GetRTrimString("BJDID");
BJFLXX bjflxx = XLBJDUtils.GetBJFLXX(sBJFLID);
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
if (sYZID.Contains("|"))
sYZID = sYZID.Trim().Split('|')[1];
TPageParams pageParams = new TPageParams();
pageParams.UrlPath = "XLBJD_JGBYZInfo.aspx";
pageParams.AddString("YZID", sYZID);
pageParams.AddString("YZMC", sText);
pageParams.AddString("PLSZAll", txtPLSZAll.Value);
pageParams.AddString("txtPLSZAllCID", txtPLSZAll.ClientID);
pageParams.AddString("txtPLSZYZListCID", txtPLSZYZList.ClientID);
pageParams.AddString("btnRefreshCID", btnRefresh2.ClientID);
OpenDialog(pageParams);
}
protected void btnRefresh_Click(object sender, EventArgs e)
{
int tmpIndex = grdXLBJDMX.SelectedIndex;
moduleGV_PageIndexChanging(null, null);
grdXLBJDMX.SelectedIndex = tmpIndex;
}
protected void btnRefresh2_Click(object sender, EventArgs e)
{//研发自测:王威 2026/01/07 00:21:29
string sBJDID = PageParam.GetRTrimString("BJDID");
string sBJDXHList = "";
int VnewID = 0;
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
if (txtPLSZAll.Value.Trim().Equals("N"))//调价范围:N|勾选记录
{
string[] sTempArr = grdXLBJDMX.CheckedRowIndexs.Split(new char[] { ',' });
foreach (string sIndex in sTempArr)
{
int iRowIndex = CMISproConvert.StrToInt(sIndex.Trim());
string sBJDXH = grdXLBJDMX.DataKeys[iRowIndex]["XLXSBJDMX_XH"].ToString().Trim();
if (!sBJDXH.Equals("") && !sBJDXH.Equals("0"))
{
sBJDXHList += sBJDXH + ",";
}
}
sBJDXHList = sBJDXHList.TrimEnd(',');
}
else if (txtPLSZAll.Value.Trim().Equals("C"))
{
#region 创建临时表
DateTime TimeStamp = MISproUtils.GetServerTime();
VnewID = CMISproDataBase.GetMaxXH("DBERP", "V_BJDXH", "V_BJDXH_ID", "") + 1;
base.InitEntityByCondition();
SQL.Clear();
SQL.Add(" insert into V_BJDXH(V_BJDXH_ID,V_BJDXH_TIMESTAMP,V_BJDXH_BJDID,V_BJDXH_BJDXH )");
SQL.Add(" select distinct :pID,:pTime,XLXSBJDMX_BJDID, XLXSBJDMX_XH ");
SQL.Add(" from XLXSBJDMX ");
SQL.Add(" left join XLXHB on XLXHB_XLXHID=XLXSBJDMX_XLXHID ");
SQL.Add(" left join XLDYDJB on XLDYDJB_DYDJID=XLXSBJDMX_DYDJID ");
SQL.Add(" left join XLXSBJXLGGTHB on XLXSBJXLGGTHB_XLGGID = XLXSBJDMX_XLGGID ");
SQL.Add(" left join XLGGB on XLGGB_XLGGID=XLXSBJXLGGTHB_XLGGIDCH and XLGGB_XLGGJDGZ = isnull(XLXHB_XLGGJDGZ,'0') ");
if (XLBJDUtils.ExistXSCPML())
{
SQL.Add(" left join XLXSBJXHML XHMLA on XHMLA.XLXSBJXHML_XLXHID = XLXSBJDMX_XLXHID and XHMLA.XLXSBJXHML_DYDJID = isnull(XLXSBJDMX_DYDJID, ' ') ");
SQL.Add(" left join XLXSBJXHML XHMLB on XHMLB.XLXSBJXHML_XLXHID = XLXSBJDMX_XLXHID and XHMLB.XLXSBJXHML_DYDJID = ' ' ");
SQL.Add(" left join XLXSCPML on XLXSCPML_CPMLID= (case when XHMLA.XLXSBJXHML_CPMLID is null then XHMLB.XLXSBJXHML_CPMLID else XHMLA.XLXSBJXHML_CPMLID end ) ");
}
SQL.Add(" where XLXSBJDMX_BJDID = :pBJDID ");
SQL.ParamByName("pID").Value = VnewID;
SQL.ParamByName("pTime").Value = TimeStamp;
SQL.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
#endregion
}
string[] sYZZList = txtPLSZYZList.Value.Trim().Split('|');
string sYZID = sYZZList[0].Trim();
double fYZZ = CMISproConvert.StrToFloat(sYZZList[1]);
string sBJFLID = PageParam.GetRTrimString("BJFLID");
string sJGBID = PageParam.GetRTrimString("JGBID");
PLTJ_JGBYZ(sBJDID, sBJFLID, sJGBID,sBJDXHList, VnewID, sYZID, fYZZ);
if (VnewID > 0)
{
#region 删除临时表
SQL.Clear();
SQL.Add("delete from V_BJDXH where V_BJDXH_ID=:pVID and V_BJDXH_BJDID =:pBJDID ");
SQL.ParamByName("pVID").Value = VnewID;
SQL.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
#endregion
}
//刷新
moduleGV_PageIndexChanging(null, null);
FormAreaUpdate();
}
protected void btnHSJJ_Click(object sender, EventArgs e)
{
if (grdXLBJDMX.SelectedIndex < 0)
{
ShowMessage("请选择处理记录!");
return;
}
string sXLXHID = grdXLBJDMX.DataKeys[grdXLBJDMX.SelectedIndex]["XLXSBJDMX_XLXHID"].ToString().Trim();
string sXLGGID = grdXLBJDMX.DataKeys[grdXLBJDMX.SelectedIndex]["XLXSBJDMX_XLGGID"].ToString().Trim();
string sXLBZID = grdXLBJDMX.DataKeys[grdXLBJDMX.SelectedIndex]["XLXSBJDMX_XLBZID"].ToString().Trim();
string sDYDJID = grdXLBJDMX.DataKeys[grdXLBJDMX.SelectedIndex]["XLXSBJDMX_DYDJID"].ToString().Trim();
string sXH = grdXLBJDMX.DataKeys[grdXLBJDMX.SelectedIndex]["XLXSBJDMX_XH"].ToString().Trim();
TPageParams tpp = new TPageParams();
if (XLBJDUtils.IsJGEJGB(PageParam.GetRTrimString("JGBID")))
tpp.UrlPath = "XLBJD_JGECBZSList.aspx";
else
tpp.UrlPath = "XLBJD_CBZSList.aspx";
tpp.CallAction = TPageCallAction.pcaBrowse;
tpp.AddString("XLXHID", sXLXHID);
tpp.AddString("XLGGID", sXLGGID);
tpp.AddString("XLBZID", sXLBZID);
tpp.AddString("DYDJID", sDYDJID);
tpp.AddString("BJDID", PageParam.GetRTrimString("BJDID"));
tpp.AddString("XH", sXH);
tpp.AddString("BJRQ", PageParam.GetRTrimString("BJRQ"));
tpp.AddString("BJFLID", PageParam.GetRTrimString("BJFLID"));
tpp.AddString("JGBID", PageParam.GetRTrimString("JGBID"));
tpp.AddString("JGBIDS", PageParam.GetRTrimString("JGBIDS"));
tpp.AddString("HSBZ", PageParam.GetRTrimString("HSBZ"));
tpp.AddString("BJDHQLY", PageParam.GetRTrimString("BJDHQLY"));
tpp.AddString("TBJCLID", PageParam.GetRTrimString("TBJCLID"));
tpp.AddString("LBJCLID", PageParam.GetRTrimString("LBJCLID"));
tpp.AddString("TJ", PageParam.GetRTrimString("TJ"));
tpp.AddString("LJ", PageParam.GetRTrimString("LJ"));
tpp.AddString("JCLLX", PageParam.GetRTrimString("JCLLX"));
tpp.AddString("LJJCLLX", PageParam.GetRTrimString("LJJCLLX"));
tpp.AddString("BJLY", PageParam.GetRTrimString("BJLY"));
tpp.AddString("CPBJMRXSWS", PageParam.GetRTrimString("CPBJMRXSWS"));
tpp.AddString("TZCLHQ", PageParam.GetRTrimString("TZCLHQ"));//是否允许调整材料行情
tpp.AddString("CANEDIT", PageParam.GetRTrimString("CANEDIT"));//报价单是否允许编辑
tpp.AddString("ZDXJJCLLX", PageParam.GetRTrimString("ZDXJJCLLX"));
tpp.AddString("JYF", PageParam.GetRTrimString("JYF"));//计运费
tpp.AddString("YSJDID", PageParam.GetRTrimString("YSJDID"));//运输节点
tpp.AddString("GYSID", PageParam.GetRTrimString("GYSID"));//运输单位
tpp.AddString("YFWLID", PageParam.GetRTrimString("YFWLID"));//运费物料
tpp.AddString("BJHYF", PageParam.GetRTrimString("BJHYF"));//报价含运费
if (PageParam.GetRTrimString("TZCLHQ").Equals("Y"))
OpenModuleDialog(100860044, tpp, btnRefresh.ClientID);
else
OpenModuleDialog(100860044, tpp);
}
#region 导出数据
protected void btnSJDC_Click(object sender, EventArgs e)
{
if (CMISproDataBase.ExistsRecord("DBERP", "select 1 from XLXSBJDMX where isnull(XLXSBJDMX_JSYCBZ,' ' )='A' and XLXSBJDMX_BJDID = '" + PageParam.GetRTrimString("BJDID") + "'"))
{
Confirm.Register("IsQD", "当前报价单明细存在材料价缺失/有用量栏目未指定材料的产品记录,是否确认导出?");
if (Confirm.GetValue("IsQD").Trim().Equals(""))
{
Confirm.Ask("IsQD");
return;
}
else if (Confirm.GetValue("IsQD").Trim().Equals("N"))
{
//表示进行了提示并选择了取消,直接返回或其他处理
Confirm.Clear();
return;
}
else if (Confirm.GetValue("IsQD").Trim().Equals("Y"))
{
//表示进行了提示并选择了确认
Confirm.Clear();
}
}
base.InitEntityByCondition();
short tcpys = 0;
short lcpys = 0;
string sTCPList = string.Empty;
string sLCPList = string.Empty;
if (!XLBJDUtils.GetXLXSBJPZXX(100860010).XLXSBJPZ_TCPBSYS.Trim().Equals(""))
tcpys = (short)CMISproConvert.StrToInt(XLBJDUtils.GetXLXSBJPZXX(100860010).XLXSBJPZ_TCPBSYS.Trim(), 0);
if (!XLBJDUtils.GetXLXSBJPZXX(100860010).XLXSBJPZ_LCPBSYS.Trim().Equals(""))
lcpys = (short)CMISproConvert.StrToInt(XLBJDUtils.GetXLXSBJPZXX(100860010).XLXSBJPZ_LCPBSYS.Trim(), 0);
bool bXSCLCB = false;
if (CurQueryEntity.FieldByName("XSCLCB").Value == "True")
{
bXSCLCB = true;
}
int iNumberDecimal = XLBJDUtils.BJCLPriceDecimal;
string sBJDID = PageParam.GetRTrimString("BJDID");
string sFileName = "";
sFileName = sBJDID + "报价单表价";
string m_tmpFilePath = FileService.CombineTempPath(sFileName + ".xlsx");
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
Dictionary<string, string> DicJGYWLID = new Dictionary<string, string>();
#region 物料加工原物料ID
TSQL sql = new TSQL(dberp);
sql.Clear();
sql.Add(" select XLXSBJCLWL_WLID,XLXSBJCLWL_JGYWLID ");
sql.Add(" from XLXSBJCLWL ");
sql.Add(" where XLXSBJCLWL_JGYWLID <> '-' ");
DataSet dsWLJGYWL = dberp.OpenDataSet(sql);
if (dsWLJGYWL.Tables[0].Rows.Count > 0)
{
foreach (DataRow trow in dsWLJGYWL.Tables[0].Rows)
{
string sWLID = trow["XLXSBJCLWL_WLID"].ToString().Trim();
string sJGYWLID = trow["XLXSBJCLWL_JGYWLID"].ToString().Trim();
if (!DicJGYWLID.ContainsKey(sWLID))
{
DicJGYWLID.Add(sWLID, sJGYWLID);
}
}
}
#endregion
TSQL SQL = new TSQL(dberp);
Dictionary<string, string> dicColumns = new Dictionary<string, string>();
DataTable dt1 = new DataTable();
dt1.Columns.Add("XLXSBJDMX_BJDID", typeof(string));
dt1.Columns.Add("XLXSBJDMX_XH", typeof(double));
dt1.Columns.Add("XLXSBJDMX_XSSX", typeof(double));
dicColumns.Add("XLXSBJDMX_XSSX", "显示序号");
dt1.Columns.Add("XLXSBJDMX_XLXHID", typeof(string));
dicColumns.Add("XLXSBJDMX_XLXHID", "型号");
dt1.Columns.Add("XLXSBJDMX_XLGGID", typeof(string));
dicColumns.Add("XLXSBJDMX_XLGGID", "规格");
dt1.Columns.Add("XLXSBJDMX_XLBZID", typeof(string));
dt1.Columns.Add("XLBZ", typeof(string));
dicColumns.Add("XLBZ", "标准");
dt1.Columns.Add("XLXSBJDMX_DYDJID", typeof(string));
dicColumns.Add("XLXSBJDMX_DYDJID", "电压等级");
dt1.Columns.Add("XLXSBJDMX_XLYSID", typeof(string));
dt1.Columns.Add("XLYS", typeof(string));
dicColumns.Add("XLYS", "颜色");
dt1.Columns.Add("XLXSBJDMX_BJCP", typeof(string));
dicColumns.Add("XLXSBJDMX_BJCP", "报价产品");
XLXSBJPZXX pzxx = XLBJDUtils.GetXLXSBJPZXX(100860000);
if (pzxx.XLXSBJPZ_XSPWQD == "Y")
{
dt1.Columns.Add("XLXSBJDMX_PWQDID", typeof(string));
dt1.Columns.Add("XLXSBJDMX_PWQDWLMC", typeof(string));
dt1.Columns.Add("XLXSBJDMX_PWQDMS", typeof(string));
dicColumns.Add("XLXSBJDMX_PWQDID", "配网清单ID");
dicColumns.Add("XLXSBJDMX_PWQDWLMC", "物料名称");
dicColumns.Add("XLXSBJDMX_PWQDMS", "描述");
}
dt1.Columns.Add("XLXSBJDMX_JGBJJ", typeof(double));
StringBuilder strSQL = new StringBuilder();
strSQL.AppendLine(" select XLXSBJDMX_BJDID,XLXSBJDMX_XH,XLXSBJDMX_XSSX, XLXSBJDMX_XLXHID, XLXSBJDMX_XLGGID,XLXSBJDMX_XLBZID, rtrim(XLXSBJDMX_XLBZID)||'|'||rtrim(XLBZ_XLBZLXMC) as XLBZ,XLXSBJDMX_DYDJID,");
strSQL.AppendLine(" XLXSBJDMX_XLYSID,rtrim(XLXSBJDMX_XLYSID)||'|'||rtrim(XLYSB_XLYSMC) as XLYS,XLXSBJDMX_BJCP,XLXSBJDMX_PWQDID,XLXSBJDMX_PWQDWLMC,XLXSBJDMX_PWQDMS,XLXSBJDMX_JLDW,XLXSBJDMX_BJSL,XLXSBJDMX_JGBJJ");
if (PageParam.GetRTrimString("HSBZ").Equals("Y"))
//AddColumn("XLXSBJDMX_JGBJJ", "含税基价", CMISproConvert.StrToInt(GetOption(100860000, "BJU002"), 5), 80);
dicColumns.Add("XLXSBJDMX_JGBJJ", "含税基价");
else
dicColumns.Add("XLXSBJDMX_JGBJJ", "无税基价");
bool bZSBJZC = CurQueryEntity.FieldByName("ZSBJZC").Value.ToString().Trim().ToUpper().Equals("TRUE");
if (bZSBJZC)
{
strSQL.AppendLine(",round(XLXSBJDJJYZ_YZZ01*100*100/81.2655989526499/71.3980341706337,6) as SCRGF ");
strSQL.AppendLine(",XLXSBJDJJYZ_YZZ01 as TZYZ_JZ01 ");
strSQL.AppendLine(",XLXSBJDJJYZ_YZZ02 as TZYZ_JZ02 ");
strSQL.AppendLine(",XLXSBJDJJYZ_YZZ03 as TZYZ_JZ03 ");
strSQL.AppendLine(",XLXSBJDJJYZ_YZZ04 as TZYZ_JZ04 ");
strSQL.AppendLine(",XLXSBJDJJYZ_YZZ05 as TZYZ_JZ05 ");
strSQL.AppendLine(",XLXSBJDJJYZ_YZZ06 as TZYZ_JZ06 ");
strSQL.AppendLine(",XLXSBJDJJYZ_YZZ07 as TZYZ_JZ07 ");
strSQL.AppendLine(",XLXSBJDJJYZ_YZZ08 as TZYZ_JZ08 ");
strSQL.AppendLine(",XLXSBJDJJYZ_YZZ09 as TZYZ_JZ09 ");
strSQL.AppendLine(",XLXSBJDJJYZ_YZZ10 as TZYZ_JZ10 ");
dt1.Columns.Add("SCRGF", typeof(double));
dt1.Columns.Add("TZYZ_JZ01", typeof(double));
dt1.Columns.Add("TZYZ_JZ02", typeof(double));
dt1.Columns.Add("TZYZ_JZ03", typeof(double));
dt1.Columns.Add("TZYZ_JZ04", typeof(double));
dt1.Columns.Add("TZYZ_JZ05", typeof(double));
dt1.Columns.Add("TZYZ_JZ06", typeof(double));
dt1.Columns.Add("TZYZ_JZ07", typeof(double));
dt1.Columns.Add("TZYZ_JZ08", typeof(double));
dt1.Columns.Add("TZYZ_JZ09", typeof(double));
dt1.Columns.Add("TZYZ_JZ10", typeof(double));
SQL.Clear();
SQL.Add("select XLXSTZYZ_YZID, XLXSTZYZ_YZMC,XLXSTZYZ_JJFS ");
SQL.Add(" from XLXSTZYZ");
SQL.Add(" where XLXSTZYZ_MXBH = 'JZJ' ");
if (!PageParam.GetRTrimString("JGBID").Equals(""))
{
SQL.Add(" and exists(select 1 from XLXSJGBYZ where XLXSJGBYZ_JGBID=:pJGBID and XLXSJGBYZ_YZID=XLXSTZYZ_YZID)");//必须是当前价格表所用的调价因子
SQL.ParamByName("pJGBID").Value = PageParam.GetRTrimString("JGBID");
}
SQL.Add(" order by XLXSTZYZ_XSXH,XLXSTZYZ_YZID ");
DataSet ds = dberp.OpenDataSet(SQL);
dicColumns.Add("SCRGF", "生产人工费");
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
string sJJFS = ds.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim();
string sJJ = sJJFS.Equals("JJ") ? "(元)" : (sJJFS.Equals("") ? "" : "(%)");
string sYZMC = ds.Tables[0].Rows[i]["XLXSTZYZ_YZMC"].ToString().Trim() + sJJ;
string sYZID = "TZYZ_" + ds.Tables[0].Rows[i]["XLXSTZYZ_YZID"].ToString().Trim();
//int iDecimal = XLBJDUtils.JGBYZZDecimal;
//if (sJJFS.Equals("JJ"))
// iDecimal = CMISproConvert.StrToInt(GetOption(100860000, "BJU002"), 2);
dicColumns.Add(sYZID, sYZMC);
}
}
strSQL.AppendLine(" ,XLXSBJDMX_JGBBJ ");
dt1.Columns.Add("XLXSBJDMX_JGBBJ", typeof(double));
if (PageParam.GetRTrimString("HSBZ").Equals("Y"))
//AddColumn("XLXSBJDMX_JGBBJ", "含税表价", CMISproConvert.StrToInt(GetOption(100860000, "BJU002"), 5), 80);
dicColumns.Add("XLXSBJDMX_JGBBJ", "含税表价");
else
dicColumns.Add("XLXSBJDMX_JGBBJ", "无税表价");
strSQL.AppendLine(" ,XLXSBJDMX_JSYCBZ ");
dt1.Columns.Add("XLXSBJDMX_JSYCBZ", typeof(string));
bool bXSFBJYY = CurQueryEntity.FieldByName("XSFBJYY").Value.ToString().Trim().ToUpper().Equals("TRUE");
if (bXSFBJYY)
{
dicColumns.Add("XLXSBJDMX_JSYCBZ", "负表价原因");
}
Dictionary<string, string> DicBJRCLCBLM = new Dictionary<string, string>();
bool bZSJJZC = CurQueryEntity.FieldByName("ZSJJZC").Value.ToString().Trim().ToUpper().Equals("TRUE");
if (bZSJJZC)
{
#region 不计入成本栏目
if (CMISproDataBase.ExistsRecord("DBERP", "select 1 from XLJGCZBLM where isnull(XLJGCZBLM_BJRCLCB,'N') = 'Y' and isnull(XLJGCZBLM_CLQDL,' ')<>' ' "))
{
SQL.Clear();
SQL.Add(" select BJDLJZSBJRCBLM_XH,BJDLJZSBJRCBLM_BJDCLCBLMH from BJDLJZSBJRCBLM where BJDLJZSBJRCBLM_BJDID = :pBJDID ");
SQL.ParamByName("pBJDID").Value = PageParam.GetRTrimString("BJDID").Trim();
DataSet dsJRCBLM = dberp.OpenDataSet(SQL);
if (dsJRCBLM.Tables[0].Rows.Count > 0)
{
foreach (DataRow trow in dsJRCBLM.Tables[0].Rows)
{
string sKey = trow["BJDLJZSBJRCBLM_XH"].ToString().Trim() + "," + trow["BJDLJZSBJRCBLM_BJDCLCBLMH"].ToString().Trim();
if (!DicBJRCLCBLM.ContainsKey(sKey))
DicBJRCLCBLM.Add(sKey, sKey);
}
}
}
#endregion
strSQL.AppendLine(" ,'" + GetOption(100860000, "BJU003") + "' as JLDW ");
dt1.Columns.Add("JLDW", typeof(string));
dicColumns.Add("JLDW", "计量单位");
strSQL.AppendLine(" ,0 as CLZL ");
dt1.Columns.Add("CLZL", typeof(double));
//AddColumn("CLZL", "材料重量", 3, 80);
dicColumns.Add("CLZL", "材料重量");
int iDecimal = CMISproConvert.StrToInt(GetOption(100860000, "BJU002"), 2);
//构建物料信息字典
if (dicCLWL.Count <= 0)
{
SQL.Clear();
SQL.Add(" select WL_WLID,WL_MC,WL_GG ");
SQL.Add(" from XLXSBJCLWL ");
SQL.Add(" left join WL on XLXSBJCLWL_WLID = WL_WLID ");
SQL.Add(" where 1=1 ");
SQL.Add(" order by XLXSBJCLWL_WLID ");
DataSet dsWL = dberp.OpenDataSet(SQL);
foreach (DataRow wlRow in dsWL.Tables[0].Rows)
{
string sWLID = wlRow["WL_WLID"].ToString().Trim().Replace("-", "_").Replace("(", "(").Replace(")", ")").Replace(")", "").Replace("(", "");
string sWLXX = wlRow["WL_MC"].ToString().Trim() + " " + wlRow["WL_GG"].ToString().Trim();
if (!dicCLWL.ContainsKey(sWLID))
{
dicCLWL.Add(sWLID, sWLXX);
}
}
}
// 一次性加载当前报价单实际使用的报价材料(含带物料的材料)
LoadBJCLInfo(sBJDID, dberp);
// 报价材料是否显示
dicBJCL_Visible.Clear();
// 根据实际使用的材料构建查询列(延迟创建,避免先增后删)
foreach (string sBJCLID in dicBJCL.Keys)
{
dicBJCL_Visible.Add(sBJCLID, "N");
string sBJCLMC = dicBJCL[sBJCLID];
strSQL.AppendLine(" ,0 as " + sBJCLID + "_SL ");
dt1.Columns.Add(sBJCLID + "_SL", typeof(string));
dicColumns.Add(sBJCLID + "_SL", sBJCLMC);
if (dicBJCL_WL.ContainsKey(sBJCLID))
{
strSQL.AppendLine(" ,' ' as " + sBJCLID + "_WLXX ");
strSQL.AppendLine(" ,0 as " + sBJCLID + "_WLJG ");
strSQL.AppendLine(" ,0 as " + sBJCLID + "_WLCB ");
dt1.Columns.Add(sBJCLID + "_WLXX", typeof(string));
dt1.Columns.Add(sBJCLID + "_WLJG", typeof(double));
dt1.Columns.Add(sBJCLID + "_WLCB", typeof(double));
dicColumns.Add(sBJCLID + "_WLXX", "材料物料");
dicColumns.Add(sBJCLID + "_WLJG", "物料价格(元/Kg)");
if (bXSCLCB)
dicColumns.Add(sBJCLID + "_WLCB", "物料成本");
}
else
{
strSQL.AppendLine(" ,' ' as " + sBJCLID + "_CLJG ");
strSQL.AppendLine(" ,0 as " + sBJCLID + "_CLCB ");
dt1.Columns.Add(sBJCLID + "_CLJG", typeof(double));
dt1.Columns.Add(sBJCLID + "_CLCB", typeof(double));
dicColumns.Add(sBJCLID + "_CLJG", "材料价格(元/Kg)");
if (bXSCLCB)
dicColumns.Add(sBJCLID + "_CLCB", "材料成本");
}
}
for (int i = 1; i <= 80; i++)
{
strSQL.AppendLine(string.Format(" ,XLXSBJDCLCB_CLSL{0},XLXSBJDCLCB_CLID{0},XLXSBJDCLCB_CLDJ{0} ", i.ToString().PadLeft(2, '0').Trim()));
}
}
bool bZSGYBZ = CurQueryEntity.FieldByName("GYBZ").Value.ToString().Trim().ToUpper().Equals("TRUE");
if (bZSGYBZ)
{
dicColumns.Add("XLXSBJYLZDMX_GYBZ", "工艺备注");
strSQL.AppendLine(" ,XLXSBJYLZDMX_GYBZ ");
dt1.Columns.Add("XLXSBJYLZDMX_GYBZ", typeof(string));
}
//if (tcpys != 0 || lcpys != 0)
// strSQL.AppendLine(" ,XLXSCLQD_TZL,XLXSCLQD_LZL ");
//else
// strSQL.AppendLine(" ,0 as XLXSCLQD_TZL,0 as XLXSCLQD_LZL ");
strSQL.AppendLine(" from XLXSBJDMX ");
strSQL.AppendLine(" left join XLBZ on XLBZ_XLBZID = XLXSBJDMX_XLBZID ");
strSQL.AppendLine(" left join XLYSB on XLYSB_XLYSID = XLXSBJDMX_XLYSID ");
if (bZSBJZC)
{
strSQL.AppendLine(" left join XLXSBJDJJYZ on XLXSBJDJJYZ_BJDID=XLXSBJDMX_BJDID and XLXSBJDJJYZ_XH=XLXSBJDMX_XH ");
}
if (bZSJJZC)
{
strSQL.AppendLine(" left join XLXSBJDCLCB on XLXSBJDCLCB_BJDID=XLXSBJDMX_BJDID and XLXSBJDCLCB_XH=XLXSBJDMX_XH ");
}
if (bZSGYBZ)
{
strSQL.AppendLine(" left join ( select XLXSBJYLZD_BJDID,XLXSBJYLZD_SQDH,XLXSBJYLZDMX_BJDXH,XLXSBJYLZDMX_GYBZ ");
strSQL.AppendLine(" from XLXSBJYLZDMX left join XLXSBJYLZD on XLXSBJYLZD_SQDH = XLXSBJYLZDMX_SQDH where XLXSBJYLZD_BJDID = :pBJDID ) YLZDMX on XLXSBJYLZD_BJDID = XLXSBJDMX_BJDID and XLXSBJYLZDMX_BJDXH = XLXSBJDMX_XH ");
}
strSQL.AppendLine(" where 1=1 and XLXSBJDMX_BJDID = :pBJDID ");
strSQL.AppendLine(" order by XLXSBJDMX_XSSX,XLXSBJDMX_XH ");
SQL.Clear();
SQL.Add(strSQL.ToString().Trim());
SQL.ParamByName("pBJDID").Value = PageParam.GetRTrimString("BJDID").Trim();
DataSet dsQry = dberp.OpenDataSet(SQL);
if (dsQry.Tables[0].Rows.Count > 0)
{
foreach (DataRow towQry in dsQry.Tables[0].Rows)
{
//double dTZL = CMISproConvert.StrToFloat(towQry["XLXSCLQD_TZL"].ToString().Trim());
//double dLZL = CMISproConvert.StrToFloat(towQry["XLXSCLQD_LZL"].ToString().Trim());
DataRow dtrow = dt1.NewRow();
dtrow["XLXSBJDMX_BJDID"] = towQry["XLXSBJDMX_BJDID"].ToString().Trim();
string sXH = towQry["XLXSBJDMX_XH"].ToString().Trim();
dtrow["XLXSBJDMX_XH"] = CMISproConvert.StrToFloat(towQry["XLXSBJDMX_XH"].ToString().Trim());
dtrow["XLXSBJDMX_XSSX"] = CMISproConvert.StrToFloat(towQry["XLXSBJDMX_XSSX"].ToString().Trim());
dtrow["XLXSBJDMX_XLXHID"] = towQry["XLXSBJDMX_XLXHID"].ToString().Trim();
dtrow["XLXSBJDMX_XLGGID"] = towQry["XLXSBJDMX_XLGGID"].ToString().Trim();
dtrow["XLXSBJDMX_XLBZID"] = towQry["XLXSBJDMX_XLBZID"].ToString().Trim();
dtrow["XLBZ"] = towQry["XLBZ"].ToString().Trim();
dtrow["XLXSBJDMX_DYDJID"] = towQry["XLXSBJDMX_DYDJID"].ToString().Trim();
dtrow["XLXSBJDMX_XLYSID"] = towQry["XLXSBJDMX_XLYSID"].ToString().Trim();
dtrow["XLYS"] = towQry["XLYS"].ToString().Trim();
dtrow["XLXSBJDMX_BJCP"] = towQry["XLXSBJDMX_BJCP"].ToString().Trim();
if (pzxx.XLXSBJPZ_XSPWQD == "Y")
{
dtrow["XLXSBJDMX_PWQDID"] = towQry["XLXSBJDMX_PWQDID"].ToString().Trim();
dtrow["XLXSBJDMX_PWQDWLMC"] = towQry["XLXSBJDMX_PWQDWLMC"].ToString().Trim();
dtrow["XLXSBJDMX_PWQDMS"] = towQry["XLXSBJDMX_PWQDMS"].ToString().Trim();
}
dtrow["XLXSBJDMX_JGBJJ"] = CMISproConvert.StrToFloat(towQry["XLXSBJDMX_JGBJJ"].ToString().Trim());
//if (dTZL > 0)
// sTCPList += towQry["XLXSBJDMX_XSSX"].ToString().Trim() + ",";
//else if (dLZL > 0)
// sLCPList += towQry["XLXSBJDMX_XSSX"].ToString().Trim() + ",";
if (bZSBJZC)
{
dtrow["SCRGF"] = CMISproConvert.StrToFloat(towQry["SCRGF"].ToString().Trim());
dtrow["TZYZ_JZ01"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ01"].ToString().Trim());
dtrow["TZYZ_JZ02"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ02"].ToString().Trim());
dtrow["TZYZ_JZ03"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ03"].ToString().Trim());
dtrow["TZYZ_JZ04"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ04"].ToString().Trim());
dtrow["TZYZ_JZ05"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ05"].ToString().Trim());
dtrow["TZYZ_JZ06"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ06"].ToString().Trim());
dtrow["TZYZ_JZ07"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ07"].ToString().Trim());
dtrow["TZYZ_JZ08"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ08"].ToString().Trim());
dtrow["TZYZ_JZ09"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ09"].ToString().Trim());
dtrow["TZYZ_JZ10"] = CMISproConvert.StrToFloat(towQry["TZYZ_JZ10"].ToString().Trim());
}
if (bXSFBJYY)
{
dtrow["XLXSBJDMX_JSYCBZ"] = XLBJD_FBJXQList.GetJSYCXQ(towQry["XLXSBJDMX_JSYCBZ"].ToString().Trim(), dicJGBTJYZ);
}
dtrow["XLXSBJDMX_JGBBJ"] = CMISproConvert.StrToFloat(towQry["XLXSBJDMX_JGBBJ"].ToString().Trim());
if (bZSJJZC)
{
dtrow["JLDW"] = towQry["JLDW"].ToString().Trim();
double dCLZL = 0;
for (int i = 1; i <= 80; i++)
{
string sBJRCBLMKey = sXH + "," + i.ToString().PadLeft(2, '0');
string sCLID = towQry["XLXSBJDCLCB_CLID" + i.ToString().PadLeft(2, '0').Trim()].ToString().Trim().Replace("-", "_").Replace("(", "(").Replace(")", ")").Replace(")", "").Replace("(", "");
if (sCLID.Contains("|"))
{
string sWLID = sCLID.Split('|')[1];
if (DicJGYWLID.ContainsKey(sWLID))
sWLID = DicJGYWLID[sWLID];
sCLID = sCLID.Split('|')[0];
if (dicBJCL.ContainsKey(sCLID))
{
double dSL = CMISproConvert.StrToFloat(towQry["XLXSBJDCLCB_CLSL" + i.ToString().PadLeft(2, '0').Trim()].ToString().Trim());
double dJG = CMISproConvert.StrToFloat(towQry["XLXSBJDCLCB_CLDJ" + i.ToString().PadLeft(2, '0').Trim()].ToString().Trim());
if (dSL != 0)
dicBJCL_Visible[sCLID] = "Y";
dtrow[sCLID + "_SL"] = CMISproConvert.StrToFloat(dtrow[sCLID + "_SL"].ToString(), 0.0) + dSL;//相同栏目的用量要合并
if (dicCLWL.ContainsKey(sWLID))
{
if (dtrow[sCLID + "_WLXX"].ToString().Trim().Equals(""))
{
dtrow[sCLID + "_WLXX"] = sWLID + "|" + dicCLWL[sWLID];
}
else
{
if (!dtrow[sCLID + "_WLXX"].ToString().Trim().Contains(sWLID + "|" + dicCLWL[sWLID]))
{
dtrow[sCLID + "_WLXX"] = dtrow[sCLID + "_WLXX"].ToString().Trim() + "...";
}
}
}
else
{
if (dtrow[sCLID + "_WLXX"].ToString().Trim().Equals(""))
{
dtrow[sCLID + "_WLXX"] = sWLID;
}
else
{
if (!dtrow[sCLID + "_WLXX"].ToString().Trim().Contains(sWLID) || (sWLID.Equals("") && !dtrow[sCLID + "_WLXX"].ToString().Trim().Equals("")))
{
dtrow[sCLID + "_WLXX"] = dtrow[sCLID + "_WLXX"].ToString().Trim() + "...";
}
}
}
if (dtrow[sCLID + "_WLXX"].ToString().EndsWith("..."))
dtrow[sCLID + "_WLJG"] = 0;
else
dtrow[sCLID + "_WLJG"] = dJG;
dtrow[sCLID + "_WLCB"] = CMISproConvert.StrToFloat(dtrow[sCLID + "_WLCB"].ToString(), 0.0) + dJG * dSL;
if (DicBJRCLCBLM.ContainsKey(sBJRCBLMKey))
dtrow[sCLID + "_WLCB"] = 0;
dCLZL += dSL;
}
}
else
{
if (dicBJCL.ContainsKey(sCLID))
{
double dSL = CMISproConvert.StrToFloat(towQry["XLXSBJDCLCB_CLSL" + i.ToString().PadLeft(2, '0').Trim()].ToString().Trim());
double dJG = CMISproConvert.StrToFloat(towQry["XLXSBJDCLCB_CLDJ" + i.ToString().PadLeft(2, '0').Trim()].ToString().Trim());
if (dSL != 0)
dicBJCL_Visible[sCLID] = "Y";
dtrow[sCLID + "_SL"] = CMISproConvert.StrToFloat(dtrow[sCLID + "_SL"].ToString(), 0.0) + dSL;//相同栏目的用量要合并
dtrow[sCLID + "_CLJG"] = dJG;
dtrow[sCLID + "_CLCB"] = dJG * CMISproConvert.StrToFloat(dtrow[sCLID + "_SL"].ToString(), 0.0);
if (DicBJRCLCBLM.ContainsKey(sBJRCBLMKey))
dtrow[sCLID + "_CLCB"] = 0;
dCLZL += dSL;
}
}
}
dtrow["CLZL"] = dCLZL;
}
if (bZSGYBZ)
{
dtrow["XLXSBJYLZDMX_GYBZ"] = towQry["XLXSBJYLZDMX_GYBZ"].ToString().Trim();
}
dt1.Rows.Add(dtrow);
}
}
foreach (string sBJCLID in dicBJCL_Visible.Keys)
{
if (dicBJCL_Visible[sBJCLID].Equals("N"))//不显示的栏目需要删除,否则记录导出时会因为最大栏目数256的限制导致栏目导出不全
{
dicColumns.Remove(sBJCLID + "_SL");
if (dt1.Columns.Contains(sBJCLID + "_SL"))
dt1.Columns.Remove(sBJCLID + "_SL");
if (dicBJCL_WL.ContainsKey(sBJCLID))
{
dicColumns.Remove(sBJCLID + "_WLXX");
dicColumns.Remove(sBJCLID + "_WLJG");
dicColumns.Remove(sBJCLID + "_WLCB");
if (dt1.Columns.Contains(sBJCLID + "_WLXX"))
dt1.Columns.Remove(sBJCLID + "_WLXX");
if (dt1.Columns.Contains(sBJCLID + "_WLJG"))
dt1.Columns.Remove(sBJCLID + "_WLJG");
if (dt1.Columns.Contains(sBJCLID + "_WLCB"))
dt1.Columns.Remove(sBJCLID + "_WLCB");
}
else
{
dicColumns.Remove(sBJCLID + "_CLJG");
dicColumns.Remove(sBJCLID + "_CLCB");
if (dt1.Columns.Contains(sBJCLID + "_CLJG"))
dt1.Columns.Remove(sBJCLID + "_CLJG");
if (dt1.Columns.Contains(sBJCLID + "_CLCB"))
dt1.Columns.Remove(sBJCLID + "_CLCB");
}
}
}
DataSet dsResult = new DataSet();
dsResult.Tables.Add(dt1);
string sColName = "";
//循环列名,进行赋值
for (int i = 0; i < dsResult.Tables[0].Columns.Count; i++)
{
if (dicColumns.ContainsKey(dsResult.Tables[0].Columns[i].ColumnName))
{
sColName = dsResult.Tables[0].Columns[i].ColumnName;
dsResult.Tables[0].Columns[i].Caption = "待处理列&_" + dicColumns[sColName];
}
}
//循环,删除列
for (int i = dsResult.Tables[0].Columns.Count - 1; i >= 0; i--)
{
if (dsResult.Tables[0].Columns[i].Caption.StartsWith("待处理列&_"))
{
dsResult.Tables[0].Columns[i].Caption = dsResult.Tables[0].Columns[i].Caption.Replace("待处理列&_", "");
}
else
{
dsResult.Tables[0].Columns.RemoveAt(i);
}
}
if (dsResult.Tables[0].Rows.Count > 0)
{
string smessage = "";
string sLet = "";
//
NpoiSheetData sd = new NpoiSheetData();
sd.ColumnStyle = new System.Collections.Generic.Dictionary<string, NpoiColumnStyle>();
NpoiColumnStyle ct = new NpoiColumnStyle();
ct.DataFormat = "@";
sd.ColumnStyle.Add("B", ct);
sd.ColumnType = new System.Collections.Generic.Dictionary<string, NpoiColumnType>();
string sCellStr = "";
string sCellStrBJ = GetBJJSGS(PageParam.GetRTrimString("JGBID"));
if (!bZSBJZC)
sCellStrBJ = "";
string sJJLM = "";
string sBJLM = "";
Dictionary<int, string> sCLJGCellIndexs = new Dictionary<int, string>();
List<int> CellIndexsList = new List<int>();
for (int k = 0; k < dicColumns.Count; k++)
{
if (dsResult.Tables[0].Columns[k].ColumnName.StartsWith("XLXSBJDMX_XSSX"))
{
sLet = TExcelData.ColIndexToReference(k);
sd.ColumnType.Add(sLet, NpoiColumnType.Double);
}
else if (dsResult.Tables[0].Columns[k].ColumnName.StartsWith("XLXSBJDMX_JGBJJ"))
{
sLet = TExcelData.ColIndexToReference(k);
sd.ColumnType.Add(sLet, NpoiColumnType.Double);
sJJLM = GetLMZF(k + 1);
}
else if (dsResult.Tables[0].Columns[k].ColumnName.StartsWith("XLXSBJDMX_JGBBJ"))
{
sLet = TExcelData.ColIndexToReference(k);
sd.ColumnType.Add(sLet, NpoiColumnType.Double);
sBJLM = GetLMZF(k + 1);
}
else if (dsResult.Tables[0].Columns[k].ColumnName.StartsWith("TZYZ_JZ"))//因子值要设为数值型
{
sLet = TExcelData.ColIndexToReference(k);
sd.ColumnType.Add(sLet, NpoiColumnType.Double);
string sYZNAME = dsResult.Tables[0].Columns[k].ColumnName;
sYZNAME = sYZNAME.Replace("TZYZ_", "");
sCellStrBJ = sCellStrBJ.Replace(sYZNAME, GetLMZF(k + 1) + "row");
}
else if (dsResult.Tables[0].Columns[k].ColumnName.StartsWith("CLZL"))
{
sLet = TExcelData.ColIndexToReference(k);
sd.ColumnType.Add(sLet, NpoiColumnType.Double);
}
else if (dsResult.Tables[0].Columns[k].ColumnName.EndsWith("_SL"))
{
sLet = TExcelData.ColIndexToReference(k);
sd.ColumnType.Add(sLet, NpoiColumnType.Double);
sCellStr += "+" + GetLMZF(k + 1) + "row";
if (IsTCP(dsResult.Tables[0].Columns[k].ColumnName.Split('_')[0].Trim()))
sTCPList += GetLMZF(k + 1) + "1" + ",";
else if (IsLCP(dsResult.Tables[0].Columns[k].ColumnName.Split('_')[0].Trim()))
sLCPList += GetLMZF(k + 1) + "1" + ",";
}
else if (dsResult.Tables[0].Columns[k].ColumnName.EndsWith("_WLJG"))
{
sLet = TExcelData.ColIndexToReference(k);
sd.ColumnType.Add(sLet, NpoiColumnType.Double);
sCellStr += "*" + GetLMZF(k + 1) + "row";
if (IsTCP(dsResult.Tables[0].Columns[k].ColumnName.Split('_')[0].Trim()))
sTCPList += GetLMZF(k + 1) + "1" + ",";
else if (IsLCP(dsResult.Tables[0].Columns[k].ColumnName.Split('_')[0].Trim()))
sLCPList += GetLMZF(k + 1) + "1" + ",";
}
else if (dsResult.Tables[0].Columns[k].ColumnName.EndsWith("_WLCB"))
{
sLet = TExcelData.ColIndexToReference(k);
sd.ColumnType.Add(sLet, NpoiColumnType.Double);
if (IsTCP(dsResult.Tables[0].Columns[k].ColumnName.Split('_')[0].Trim()))
sTCPList += GetLMZF(k + 1) + "1" + ",";
else if (IsLCP(dsResult.Tables[0].Columns[k].ColumnName.Split('_')[0].Trim()))
sLCPList += GetLMZF(k + 1) + "1" + ",";
}
else if (dsResult.Tables[0].Columns[k].ColumnName.EndsWith("_CLJG"))
{
sLet = TExcelData.ColIndexToReference(k);
sd.ColumnType.Add(sLet, NpoiColumnType.Double);
sCellStr += "*" + GetLMZF(k + 1) + "row";
sCLJGCellIndexs.Add(k + 1, "1");
CellIndexsList.Add(k + 1);
if (IsTCP(dsResult.Tables[0].Columns[k].ColumnName.Split('_')[0].Trim()))
sTCPList += GetLMZF(k + 1) + "1" + ",";
else if (IsLCP(dsResult.Tables[0].Columns[k].ColumnName.Split('_')[0].Trim()))
sLCPList += GetLMZF(k + 1) + "1" + ",";
}
else if (dsResult.Tables[0].Columns[k].ColumnName.EndsWith("_CLCB"))
{
sLet = TExcelData.ColIndexToReference(k);
sd.ColumnType.Add(sLet, NpoiColumnType.Double);
if (IsTCP(dsResult.Tables[0].Columns[k].ColumnName.Split('_')[0].Trim()))
sTCPList += GetLMZF(k + 1) + "1" + ",";
else if (IsLCP(dsResult.Tables[0].Columns[k].ColumnName.Split('_')[0].Trim()))
sLCPList += GetLMZF(k + 1) + "1" + ",";
}
}
NpoiCellData cd = new NpoiCellData();
cd.CellFormula = new Dictionary<string, string>();
if (!sCellStr.Equals("") || !sCellStrBJ.Equals(""))
{
for (int k = 0; k < dsResult.Tables[0].Rows.Count; k++)
{
int tk = k + 2;
string sk = tk.ToString().Trim();
if (!sCellStr.Equals(""))
{
sCellStr = sCellStr.TrimStart('+');
string stCellStr = sCellStr.Replace("row", sk);
cd.CellFormula.Add(sJJLM + sk, stCellStr);
foreach (int cellIndex in CellIndexsList)
{
double dSL = CMISproConvert.StrToFloat(dsResult.Tables[0].Rows[k][cellIndex - 1].ToString(), 0);
if (dSL == 0)
continue;
if (sCLJGCellIndexs[cellIndex].Equals("1"))
{
sCLJGCellIndexs[cellIndex] = sk;
continue;
}
cd.CellFormula.Add(GetLMZF(cellIndex) + sk, GetLMZF(cellIndex) + sCLJGCellIndexs[cellIndex]);
}
}
if (!sCellStrBJ.Equals(""))
{
if (!sCellStr.Equals(""))
sCellStrBJ = sCellStrBJ.Replace("JGBJJ", "(" + sCellStr + ")");
else
sCellStrBJ = sCellStrBJ.Replace("JGBJJ", sJJLM + "row");
string stCellStrBJ = sCellStrBJ.Replace("row", sk);
cd.CellFormula.Add(sBJLM + sk, stCellStrBJ);
}
}
}
if (!sTCPList.Equals("") || !sLCPList.Equals(""))
{
cd.CellColor = new Dictionary<string, short>();
cd.CellFillPattern = new Dictionary<string, gtFillPattern>();
string []sTCPLists = sTCPList.TrimEnd(',').Split(',');
string[] sLCPLists = sLCPList.TrimEnd(',').Split(',');
foreach (string sLm in sTCPLists)
{
cd.CellColor.Add(sLm, tcpys);
cd.CellFillPattern.Add(sLm, gtFillPattern.SolidForeground);
}
foreach (string sLm in sLCPLists)
{
cd.CellColor.Add(sLm, lcpys);
cd.CellFillPattern.Add(sLm, gtFillPattern.SolidForeground);
}
}
TExcelData.CreateExcel_XLSX_NPOI(m_tmpFilePath, dsResult, true, cd, sd, ref smessage);
if (smessage.Equals(""))
{
System.IO.FileInfo file = new System.IO.FileInfo(m_tmpFilePath);
string URL = Page.ResolveClientUrl("~") + "/N_MODEL/Dialog/TempFileDownload.ashx?TempFileName=" + file.Name + "&FileName=" + sFileName + file.Extension;
string jsript = @"var JLDCDiv = document.createElement('div');JLDCDiv.style.width=0;JLDCDiv.style.height=0;JLDCDiv.id = 'DivifrDownLoad';"
+ " var ele=document.documentElement||document.body;ele.appendChild(JLDCDiv);var iJLDCfrm = document.createElement('iframe');iJLDCfrm.id = 'iJLDCfrmDownLoad';iJLDCfrm.src = '" + URL + "';"
+ "iJLDCfrm.style.width = 0;iJLDCfrm.style.height = 0; JLDCDiv.appendChild(iJLDCfrm);";
AJAXRunScript(this, "OPENJLDC", jsript);
}
else
{
ShowMessage(smessage);
}
}
else
{
ShowMessage("无记录可以导出!");
}
}
protected void btnHQDC_Click(object sender, EventArgs e)
{
BJDHQLJDCJGE();
}
#region JGE导出
private DataSet GetCLCBTable(string sBJDID)
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Clear();
sql.Add(" select XLXSBJDMX_XLXHID,XLXSBJDMX_XLGGID,XLXSBJDMX_XLBZID,XLXSBJDMX_DYDJID,XLXSBJDMX_XSSX ");
for (int i = 1; i <= 80; i++)
{
string sL = i.ToString().PadLeft(2, '0');
sql.Add(string.Format(",XLXSBJDCLCB_CLSL{0},XLXSBJDCLCB_CLDJ{0},XLXSBJDCLCB_CLID{0} ", sL));
}
sql.Add(" from XLXSBJDCLCB ");
sql.Add(" left join XLXSBJDMX on XLXSBJDMX_BJDID=XLXSBJDCLCB_BJDID and XLXSBJDMX_XH=XLXSBJDCLCB_XH ");
sql.Add(" where XLXSBJDCLCB_BJDID=:pBJDID ");
sql.ParamByName("pBJDID").Value = sBJDID;
return dberp.OpenDataSet(sql);
}
private Dictionary<string, string> GetCLMCDic()
{
Dictionary<string, string> dicCLHQ = new Dictionary<string, string>();
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Clear();
sql.Add(@"select XLXSBJCL_BJCLID,XLXSBJCL_BJCLMC
from XLXSBJCL where 1=1 ");
DataSet ds = dberp.OpenDataSet(sql);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
string sBJCLID = ds.Tables[0].Rows[i]["XLXSBJCL_BJCLID"].ToString().Trim();
string sCLMC = ds.Tables[0].Rows[i]["XLXSBJCL_BJCLMC"].ToString().Trim();
if (!dicCLHQ.ContainsKey(sBJCLID))
dicCLHQ.Add(sBJCLID, sCLMC);
}
return dicCLHQ;
}
private Dictionary<string, Dictionary<string, XLCLQDLEntity>> GetCLQDTable()
{
DataSet ds = GetCLCBTable(PageParam.GetRTrimString("BJDID"));
Dictionary<string, string> dicCLMC = GetCLMCDic();
Dictionary<string, Dictionary<string, XLCLQDLEntity>> dicCLQD = new Dictionary<string, Dictionary<string, XLCLQDLEntity>>();
int estimatedCapacity = ds.Tables[0].Rows.Count;
if (estimatedCapacity > 0)
{
dicCLQD = new Dictionary<string, Dictionary<string, XLCLQDLEntity>>(estimatedCapacity);
}
int xlxhIdIndex = ds.Tables[0].Columns.IndexOf("XLXSBJDMX_XLXHID");
int xlggIdIndex = ds.Tables[0].Columns.IndexOf("XLXSBJDMX_XLGGID");
int xlbzIdIndex = ds.Tables[0].Columns.IndexOf("XLXSBJDMX_XLBZID");
int dydjIdIndex = ds.Tables[0].Columns.IndexOf("XLXSBJDMX_DYDJID");
int xssxIndex = ds.Tables[0].Columns.IndexOf("XLXSBJDMX_XSSX");
// 使用StringBuilder构建键
StringBuilder keyBuilder = new StringBuilder(100);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
DataRow row = ds.Tables[0].Rows[i];
// 使用StringBuilder构建键
keyBuilder.Length = 0; // 清空StringBuilder
keyBuilder.Append(row[xlxhIdIndex].ToString().Trim()).Append("|");
keyBuilder.Append(row[xlggIdIndex].ToString().Trim()).Append("|");
keyBuilder.Append(row[xlbzIdIndex].ToString().Trim()).Append("|");
keyBuilder.Append(row[dydjIdIndex].ToString().Trim()).Append("|");
keyBuilder.Append(row[xssxIndex].ToString().Trim());
string sKey = keyBuilder.ToString();
if (!dicCLQD.ContainsKey(sKey))
{
Dictionary<string, XLCLQDLEntity> XLCLQDList = new Dictionary<string, XLCLQDLEntity>(80);
for (int j = 1; j <= 80; j++)
{
string sL = j.ToString().PadLeft(2, '0');
// 缓存列名
string clslColumn = "XLXSBJDCLCB_CLSL" + sL;
string cldjColumn = "XLXSBJDCLCB_CLDJ" + sL;
string clidColumn = "XLXSBJDCLCB_CLID" + sL;
double dSL = CMISproConvert.StrToFloat(row[clslColumn].ToString().Trim(), 0);
if (dSL > 0)
{
string sCLID = row[clidColumn].ToString().Trim().Split('|')[0];
XLCLQDLEntity clqd = new XLCLQDLEntity();
clqd.CLQDL = sL;
clqd.CLSL = dSL;
clqd.CLJG = CMISproConvert.StrToFloat(row[cldjColumn].ToString().Trim(), 0);
clqd.SHL = 0;
clqd.CLJGBL = 1;
clqd.BJCLID = sCLID;
if (dicCLMC.ContainsKey(sCLID))
clqd.LMMC = dicCLMC[sCLID];
XLCLQDList.Add(sL, clqd);
}
}
if (XLCLQDList.Count > 0)
dicCLQD.Add(sKey, XLCLQDList);
}
}
return dicCLQD;
}
private void BJDHQLJDCJGE()
{
Dictionary<string, Dictionary<string, XLCLQDLEntity>> dicCLQD = GetCLQDTable();
DataSet FinalExcelSet = new DataSet();
DataTable FinalTable = new DataTable();
FinalTable.TableName = "报价单行情材料成本";
FinalTable.Columns.Add("显示序号", typeof(double));
FinalTable.Columns.Add("型号", typeof(string));
FinalTable.Columns.Add("规格", typeof(string));
FinalTable.Columns.Add("标准", typeof(string));
FinalTable.Columns.Add("电压等级", typeof(string));
FinalTable.Columns.Add("材料编码", typeof(string));
FinalTable.Columns.Add("材料名称", typeof(string));
FinalTable.Columns.Add("材料价格(元/Kg)", typeof(double));
FinalTable.Columns.Add("材料用量", typeof(double));
FinalTable.Columns.Add("材料成本", typeof(double));
// 使用字典提高查找效率
Dictionary<string, DataRow> rowDictionary = new Dictionary<string, DataRow>();
foreach (string sKey in dicCLQD.Keys)
{
bool flag = false;
string[] keyParts = sKey.Split('|');
string sXLXHID = keyParts[0];
string sXLGGID = keyParts[1];
string sXLBZID = keyParts[2];
string sDYDJID = keyParts[3];
double dXSSX = CMISproConvert.StrToFloat(keyParts[4], 0);
foreach (string CLQDL in dicCLQD[sKey].Keys)
{
XLCLQDLEntity entity = dicCLQD[sKey][CLQDL];
string sCLBM = entity.BJCLID;
string sCLMC = entity.LMMC;
double dCLJG = entity.CLJG;
double dCLSL = NumberUtils.RoundX(entity.CLSL * (1 - entity.SHL / 100) * entity.CLJGBL, 6);
if (dCLSL == 0)
continue;
double dCLCB = NumberUtils.RoundX(dCLJG * dCLSL, 6);
// 创建唯一键用于查找
string rowKey = dXSSX.ToString() + "|" + sCLBM;
if (rowDictionary.ContainsKey(rowKey))
{
DataRow dr = rowDictionary[rowKey];
double currentUsage = CMISproConvert.StrToFloat(dr["材料用量"].ToString(), 0);
double currentCost = CMISproConvert.StrToFloat(dr["材料成本"].ToString(), 0);
dr["材料用量"] = currentUsage + dCLSL;
dr["材料成本"] = currentCost + dCLCB;
dr["材料价格(元/Kg)"] = NumberUtils.RoundX((currentCost + dCLCB) / (currentUsage + dCLSL), 6);
}
else
{
DataRow newRow = FinalTable.NewRow();
newRow["显示序号"] = dXSSX;
newRow["型号"] = sXLXHID;
newRow["规格"] = sXLGGID;
newRow["标准"] = sXLBZID;
newRow["电压等级"] = sDYDJID;
newRow["材料编码"] = sCLBM;
newRow["材料名称"] = sCLMC;
newRow["材料价格(元/Kg)"] = dCLJG;
newRow["材料用量"] = dCLSL;
newRow["材料成本"] = dCLCB;
FinalTable.Rows.Add(newRow);
rowDictionary.Add(rowKey, newRow);
}
flag = true;
}
if (flag)
{
DataRow newRowBlank = FinalTable.NewRow();
FinalTable.Rows.Add(newRowBlank);
}
}
// 其余代码保持不变...
FinalExcelSet.Tables.Add(FinalTable);
NpoiSheetData sd = new NpoiSheetData();
sd.ColumnStyle = new System.Collections.Generic.Dictionary<string, NpoiColumnStyle>();
NpoiColumnStyle ct = new NpoiColumnStyle();
ct.DataFormat = "0;-0;;@";
sd.ColumnStyle.Add("A", ct);
ct.DataFormat = "0.000;-0.000;;@";
sd.ColumnStyle.Add("H", ct);
ct.DataFormat = "0.000000;-0.000000;;@";
sd.ColumnStyle.Add("I", ct);
ct.DataFormat = "0.0000;-0.0000;;@";
sd.ColumnStyle.Add("J", ct);
sd.ColumnType = new System.Collections.Generic.Dictionary<string, NpoiColumnType>();
string sLet = "";
sLet = TExcelData.ColIndexToReference(0);
sd.ColumnType.Add(sLet, NpoiColumnType.Double);
sLet = TExcelData.ColIndexToReference(7);
sd.ColumnType.Add(sLet, NpoiColumnType.Double);
sLet = TExcelData.ColIndexToReference(8);
sd.ColumnType.Add(sLet, NpoiColumnType.Double);
sLet = TExcelData.ColIndexToReference(9);
sd.ColumnType.Add(sLet, NpoiColumnType.Double);
string sFileName = tSession.UserId.Trim() + Guid.NewGuid().ToString() + "材料成本";
string m_tmpFilePath = FileService.CombineTempPath(sFileName + ".xlsx");
string smessage = string.Empty;
TExcelData.CreateExcel_XLSX_NPOI(m_tmpFilePath, FinalExcelSet, true, null, sd, ref smessage);
if (smessage.Equals(""))
{
System.IO.FileInfo file = new System.IO.FileInfo(m_tmpFilePath);
string URL = Page.ResolveClientUrl("~") + "/N_MODEL/Dialog/TempFileDownload.ashx?TempFileName=" + file.Name + "&FileName=" + sFileName + file.Extension;
string jsript = @"var JLDCDiv = document.createElement('div');JLDCDiv.style.width=0;JLDCDiv.style.height=0;JLDCDiv.id = 'DivifrDownLoad';"
+ " var ele=document.documentElement||document.body;ele.appendChild(JLDCDiv);var iJLDCfrm = document.createElement('iframe');iJLDCfrm.id = 'iJLDCfrmDownLoad';iJLDCfrm.src = '" + URL + "';"
+ "iJLDCfrm.style.width = 0;iJLDCfrm.style.height = 0; JLDCDiv.appendChild(iJLDCfrm);";
AjaxRunScript(this,"OPENJLDC", jsript);
}
else
{
ShowMessage(smessage);
}
}
#endregion
private bool IsTCP(string sBJCLID)
{
if (string.IsNullOrEmpty(sBJCLID)) return false;
if (!_tcpCache.ContainsKey(sBJCLID))
{
bool result = CMISproDataBase.ExistsRecord("DBERP",
"select 1 from XLXSBJCL where XLXSBJCL_JTZ='Y' and XLXSBJCL_BJCLID='" + sBJCLID + "'");
lock (_tcpLcpLock)
{
if (!_tcpCache.ContainsKey(sBJCLID))
_tcpCache.Add(sBJCLID, result);
}
}
return _tcpCache[sBJCLID];
}
private bool IsLCP(string sBJCLID)
{
if (string.IsNullOrEmpty(sBJCLID)) return false;
if (!_lcpCache.ContainsKey(sBJCLID))
{
bool result = CMISproDataBase.ExistsRecord("DBERP",
"select 1 from XLXSBJCL where XLXSBJCL_JLZ='Y' and XLXSBJCL_BJCLID='" + sBJCLID + "'");
lock (_tcpLcpLock)
{
if (!_lcpCache.ContainsKey(sBJCLID))
_lcpCache.Add(sBJCLID, result);
}
}
return _lcpCache[sBJCLID];
}
/// <summary>
/// 一次性加载当前报价单实际使用到的报价材料(含带物料的材料)
/// 替代原 80 OR LIKE 子查询,避免数据库全表扫描
/// </summary>
private void LoadBJCLInfo(string sBJDID, TDatabase dberp)
{
if (dicBJCL.Count > 0) return;
TSQL SQL = new TSQL(dberp);
// 1. 取出当前报价单所有 CLID01~CLID80 的值,在内存中解析出 BJCLID
StringBuilder sb = new StringBuilder();
sb.AppendLine("SELECT ");
for (int i = 1; i <= 80; i++)
{
if (i > 1) sb.AppendLine(",");
sb.Append("XLXSBJDCLCB_CLID").Append(i.ToString().PadLeft(2, '0'));
}
sb.AppendLine(" FROM XLXSBJDCLCB WHERE XLXSBJDCLCB_BJDID = :pBJDID");
SQL.Add(sb.ToString());
SQL.ParamByName("pBJDID").Value = sBJDID;
DataSet dsCLID = dberp.OpenDataSet(SQL);
Dictionary<string, string> dicBJCLID = new Dictionary<string, string>();
Dictionary<string, string> dicBJCLID_WL = new Dictionary<string, string>();
foreach (DataRow row in dsCLID.Tables[0].Rows)
{
for (int i = 1; i <= 80; i++)
{
string sCLID = row["XLXSBJDCLCB_CLID" + i.ToString().PadLeft(2, '0')].ToString().Trim();
if (string.IsNullOrEmpty(sCLID)) continue;
bool bHasWL = sCLID.Contains("|");
string sBJCLID = bHasWL ? sCLID.Split('|')[0] : sCLID;
if (string.IsNullOrEmpty(sBJCLID)) continue;
if (!dicBJCLID.ContainsKey(sBJCLID))
dicBJCLID.Add(sBJCLID, sBJCLID);
if (bHasWL && !dicBJCLID_WL.ContainsKey(sBJCLID))
dicBJCLID_WL.Add(sBJCLID, sBJCLID);
}
}
if (dicBJCLID.Count == 0) return;
// 2. 一次性查询 XLXSBJCL 获取材料名称(分批,避免参数过多)
List<string> listBJCLID = new List<string>(dicBJCLID.Keys);
int iBatchSize = 500;
for (int iBatch = 0; iBatch < listBJCLID.Count; iBatch += iBatchSize)
{
SQL.Clear();
SQL.Add(" SELECT XLXSBJCL_BJCLID, XLXSBJCL_BJCLMC ");
SQL.Add(" FROM XLXSBJCL ");
SQL.Add(" WHERE XLXSBJCL_BJCLID IN (");
int idx = 0;
int iEnd = Math.Min(iBatch + iBatchSize, listBJCLID.Count);
for (int i = iBatch; i < iEnd; i++)
{
if (idx > 0) SQL.Add(",");
string sParam = "pID" + idx.ToString();
SQL.Add(":"+sParam);
SQL.ParamByName(sParam).Value = listBJCLID[i];
idx++;
}
SQL.Add(") ");
SQL.Add(" ORDER BY XLXSBJCL_BJCLID ");
DataSet dsBJCL = dberp.OpenDataSet(SQL);
foreach (DataRow row in dsBJCL.Tables[0].Rows)
{
string sBJCLID_Raw = row["XLXSBJCL_BJCLID"].ToString().Trim();
string sBJCLID = sBJCLID_Raw
.Replace("-", "_").Replace("(", "(").Replace(")", ")").Replace(")", "").Replace("(", "");
string sBJCLMC = row["XLXSBJCL_BJCLMC"].ToString().Trim();
if (!dicBJCL.ContainsKey(sBJCLID))
{
dicBJCL.Add(sBJCLID, sBJCLMC);
if (dicBJCLID_WL.ContainsKey(sBJCLID_Raw) && !dicBJCL_WL.ContainsKey(sBJCLID))
dicBJCL_WL.Add(sBJCLID, sBJCLMC);
}
}
}
}
public static string GetLMZF(int i)
{
string sLMZF = "";
Dictionary<int, string> sZF = new Dictionary<int, string>();
sZF.Add(1, "A"); sZF.Add(2, "B"); sZF.Add(3, "C"); sZF.Add(4, "D"); sZF.Add(5, "E"); sZF.Add(6, "F"); sZF.Add(7, "G");
sZF.Add(8, "H"); sZF.Add(9, "I"); sZF.Add(10, "J"); sZF.Add(11, "K"); sZF.Add(12, "L"); sZF.Add(13, "M"); sZF.Add(14, "N");
sZF.Add(15, "O"); sZF.Add(16, "P"); sZF.Add(17, "Q"); sZF.Add(18, "R"); sZF.Add(19, "S"); sZF.Add(20, "T"); sZF.Add(21, "U");
sZF.Add(22, "V"); sZF.Add(23, "W"); sZF.Add(24, "X"); sZF.Add(25, "Y"); sZF.Add(26, "Z"); sZF.Add(0, ""); sZF.Add(-1, "");
int j = i / 26;
int k = i % 26;
if (k == 0)
sLMZF = sZF[j - 1] + "Z";
else
sLMZF = sZF[j] + sZF[k];
return sLMZF;
}
public static string GetBJJSGS(string sJGBID)
{
string sJSGS = "";
if (!XLBJDUtils.IsJGEJGB(sJGBID))
return sJSGS;
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
SQL.Add("select XLXSJGB_JSGS from XLXSJGB where XLXSJGB_JGBID=:pJGBID ");
SQL.ParamByName("pJGBID").Value = sJGBID;
DataSet ds = dberp.OpenDataSet(SQL);
if (ds.Tables[0].Rows.Count > 0)
{
sJSGS = ds.Tables[0].Rows[0]["XLXSJGB_JSGS"].ToString().Trim();
}
if (sJSGS.Equals(""))
{
DataSet dsJGBYZ = new DataSet();
XLBJDUtils.GetdsJGBYZ_JGE(sJGBID, ref dsJGBYZ);
Dictionary<string, string> DicTJYZ = new Dictionary<string, string>();
Dictionary<string, string> DicJJFS = new Dictionary<string, string>();
string sFistJJFS = "";
foreach (DataRow trow in dsJGBYZ.Tables[0].Rows)
{
string sTJYZ = trow["XLXSTZYZ_TJYZID"].ToString().Trim();
string sYZID = trow["XLXSJGBYZ_YZID"].ToString().Trim();
string sJJFS = trow["XLXSTZYZ_JJFS"].ToString().Trim();
if (sJJFS.Equals("SX"))
return sJSGS;
if (sFistJJFS.Equals(""))
sFistJJFS = sJJFS;
if (!DicJJFS.ContainsKey(sTJYZ))
DicJJFS.Add(sTJYZ, sJJFS);
if (DicTJYZ.ContainsKey(sTJYZ))
{
string sTJYZGS = DicTJYZ[sTJYZ] + "+" + sYZID;
DicTJYZ[sTJYZ] = sTJYZGS;
}
else
DicTJYZ.Add(sTJYZ, sYZID);
}
string sJDGS = "";
string sJJGS = "";
string sKDGS = "";
foreach (string sKey in DicTJYZ.Keys)
{
if (DicJJFS[sKey].Equals("JD"))
{
sJDGS += "*(1+(" + DicTJYZ[sKey] + ")/100.00)";
}
else if (DicJJFS[sKey].Equals("JJ"))
{
sJJGS += "+" + DicTJYZ[sKey];
}
else if (DicJJFS[sKey].Equals("KD"))
{
sKDGS += "/(1-(" + DicTJYZ[sKey] + ")/100.00)";
}
}
sJSGS = "JGBJJ";
if (XLBJDUtils.JJFirst_JGBYZ(sJGBID))
{
if (!sJJGS.Equals(""))
{
sJSGS += sJJGS;
sJSGS = "(" + sJSGS + ")";
}
if (!sJJGS.Equals(""))
sJSGS += sJJGS;
if (!sJDGS.Equals(""))
sJSGS += sJDGS;
if (!sKDGS.Equals(""))
sJSGS += sKDGS;
}
else
{
if (!sJDGS.Equals(""))
sJSGS += sJDGS;
if (!sKDGS.Equals(""))
sJSGS += sKDGS;
if (!sJJGS.Equals(""))
sJSGS += sJJGS;
}
}
return sJSGS;
}
public static void CalcUpdateJGBBJ(TDatabase dberp, TSQL SQL, DataSet dsJGBYZ, int VnewID, string sBJDID,string sBJFLID, string sMXBH, string sJGBID, int iXSWS, string sJSBLFS, string sWHRID, string sWHR, string sJGBIDS)
{
string sJSGS = XLBJDUtils.GetJGBJSGS(sJGBID);
string sTJYSList_ = "";//记录调价因素为空的因子id
string sTJYSList1 = "";//记录调价因素为'1'的因子id
string sTJYSList3 = "";//记录调价因素为'3'的因子id
string sTJYSList4 = "";//记录调价因素为'4'的因子id
string sTJYSList5 = "";//记录调价因素为'5'的因子id
string sTJYSList8 = "";//记录调价因素为'8'的因子id
for (int i = 0; i < dsJGBYZ.Tables[0].Rows.Count; i++)
{
if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals(""))
{
sTJYSList_ += dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim() + ",";
}
else if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals("1"))
{
sTJYSList1 += dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim() + ",";
}
else if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals("3"))
{
sTJYSList3 += dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim() + ",";
}
else if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals("4"))
{
sTJYSList4 += dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim() + ",";
}
else if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals("5"))
{
sTJYSList5 += dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim() + ",";
}
else if (dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYS"].ToString().Trim().Equals("8"))
{
sTJYSList8 += dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim() + ",";
}
}
sTJYSList_ = sTJYSList_.TrimEnd(',');
sTJYSList1 = sTJYSList1.TrimEnd(',');
sTJYSList3 = sTJYSList3.TrimEnd(',');
sTJYSList4 = sTJYSList4.TrimEnd(',');
sTJYSList5 = sTJYSList5.TrimEnd(',');
sTJYSList8 = sTJYSList8.TrimEnd(',');
string sJDSQL = "1";
string sKDSQL = "1";
string sJJSQL = "0";
string sSXSQL = "1";
string sTJYZID = dsJGBYZ.Tables[0].Rows[0]["XLXSTZYZ_TJYZID"].ToString().Trim();
string sJJFS = dsJGBYZ.Tables[0].Rows[0]["XLXSTZYZ_JJFS"].ToString().Trim();
for (int i = 1; i < dsJGBYZ.Tables[0].Rows.Count; i++)
{
if (!sTJYZID.Equals(dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYZID"].ToString().Trim()))
{
if (sJJFS.Equals("JD"))
sJDSQL = sJDSQL + "*(1+JDYZZ_" + sTJYZID + "/100.0)";
else if (sJJFS.Equals("KD"))
sKDSQL = sKDSQL + "/(1-KDYZZ_" + sTJYZID + "/100.0)";
else if (sJJFS.Equals("JJ"))
sJJSQL += "+JJYZZ_" + sTJYZID;
else if (sJJFS.Equals("SX"))
sSXSQL = sSXSQL + "*(case when SXYZZ_" + sTJYZID + ">=0 then 1/(1-SXYZZ_" + sTJYZID + "/100.0) else (1+SXYZZ_" + sTJYZID + "/100.0) end)";
sTJYZID = dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYZID"].ToString().Trim();
sJJFS = dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim();
}
}
if (sJJFS.Equals("JD"))
sJDSQL = sJDSQL + "*(1+JDYZZ_" + sTJYZID + "/100.0)";
else if (sJJFS.Equals("KD"))
sKDSQL = sKDSQL + "/(1-KDYZZ_" + sTJYZID + "/100.0)";
else if (sJJFS.Equals("JJ"))
sJJSQL += "+JJYZZ_" + sTJYZID;
else if (sJJFS.Equals("SX"))
sSXSQL = sSXSQL + "*(case when SXYZZ_" + sTJYZID + ">=0 then 1/(1-SXYZZ_" + sTJYZID + "/100.0) else (1+SXYZZ_" + sTJYZID + "/100.0) end)";
SQL.Clear();
SQL.Add(" merge into V_XSBJJSJGB tar ");
SQL.Add(" using ( ");
SQL.Add("select BJDID,BJDXH," + sJDSQL + " as JDYZZ," + sKDSQL + " as KDYZZ," + sJJSQL + " as JJYZZ," + sSXSQL + " as SXYZZ,XLXSBJDJJYZ_YZZ01,XLXSBJDJJYZ_YZZ02,XLXSBJDJJYZ_YZZ03,XLXSBJDJJYZ_YZZ04,XLXSBJDJJYZ_YZZ05,XLXSBJDJJYZ_YZZ06,XLXSBJDJJYZ_YZZ07,XLXSBJDJJYZ_YZZ08,XLXSBJDJJYZ_YZZ09,XLXSBJDJJYZ_YZZ10 ");
SQL.Add(" from ");
SQL.Add("(");
SQL.Add(" select XLXSBJDJJYZ_BJDID as BJDID,XLXSBJDJJYZ_XH as BJDXH,XLXSBJDJJYZ_YZZ01,XLXSBJDJJYZ_YZZ02,XLXSBJDJJYZ_YZZ03,XLXSBJDJJYZ_YZZ04,XLXSBJDJJYZ_YZZ05,XLXSBJDJJYZ_YZZ06,XLXSBJDJJYZ_YZZ07,XLXSBJDJJYZ_YZZ08,XLXSBJDJJYZ_YZZ09,XLXSBJDJJYZ_YZZ10,");
SQL.Add(" (");
SQL.Add(string.Format("XLXSBJDJJYZ_YZZ{0}", dsJGBYZ.Tables[0].Rows[0]["XLXSJGBYZ_YZID"].ToString().Trim().Replace("JZ", "")));
sTJYZID = dsJGBYZ.Tables[0].Rows[0]["XLXSTZYZ_TJYZID"].ToString().Trim();
sJJFS = dsJGBYZ.Tables[0].Rows[0]["XLXSTZYZ_JJFS"].ToString().Trim();
for (int i = 1; i < dsJGBYZ.Tables[0].Rows.Count; i++)
{
if (sTJYZID.Equals(dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYZID"].ToString().Trim()))
{
SQL.Add(string.Format("+XLXSBJDJJYZ_YZZ{0}", dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim().Replace("JZ", "")));
}
else
{
if (sJJFS.Equals("JD"))
SQL.Add(") as " + "JDYZZ_" + sTJYZID);
else if (sJJFS.Equals("KD"))
SQL.Add(") as " + "KDYZZ_" + sTJYZID);
else if (sJJFS.Equals("JJ"))
SQL.Add(") as " + "JJYZZ_" + sTJYZID);
else if (sJJFS.Equals("SX"))
SQL.Add(") as " + "SXYZZ_" + sTJYZID);
sTJYZID = dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_TJYZID"].ToString().Trim();
sJJFS = dsJGBYZ.Tables[0].Rows[i]["XLXSTZYZ_JJFS"].ToString().Trim();
SQL.Add(",(");
SQL.Add(string.Format("XLXSBJDJJYZ_YZZ{0}", dsJGBYZ.Tables[0].Rows[i]["XLXSJGBYZ_YZID"].ToString().Trim().Replace("JZ", "")));
}
}
if (sJJFS.Equals("JD"))
SQL.Add(") as " + "JDYZZ_" + sTJYZID);
else if (sJJFS.Equals("KD"))
SQL.Add(") as " + "KDYZZ_" + sTJYZID);
else if (sJJFS.Equals("JJ"))
SQL.Add(") as " + "JJYZZ_" + sTJYZID);
else if (sJJFS.Equals("SX"))
SQL.Add(") as " + "SXYZZ_" + sTJYZID);
SQL.Add(" from XLXSBJDJJYZ");
SQL.Add(" where XLXSBJDJJYZ_BJDID=:pBJDID ");
SQL.Add(" ) a");
SQL.Add(" ) sor ");
SQL.Add(" on( ");
SQL.Add(" V_XSBJJSJGB_ID=:pID ");
SQL.Add(" and V_XSBJJSJGB_BJDID=:pBJDID ");
SQL.Add(" and V_XSBJJSJGB_BJDID=sor.BJDID ");
SQL.Add(" and V_XSBJJSJGB_BJDXH=BJDXH ");
SQL.Add(" ) ");
SQL.Add(" when matched then update set ");
if (sMXBH == "JGB")
{
if (sJSBLFS.Equals("C1") || sJSBLFS.Equals("C2"))//C1|进一法(材料价各分项进一)、C2|进一法(材料价汇总进一)
{
if (sJSGS.Equals(""))
{
//此处根据序号区分先加价还是先加点/扣点
if (XLBJDUtils.JJFirst_JGBYZ(sJGBID))
{
//先加价
SQL.Add(string.Format("V_XSBJJSJGB_JGBBJ=CEILING(RoundFix((abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))+isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)*(case when V_XSBJJSJGB_JGBYSJDZ = 0 then 1 else V_XSBJJSJGB_JGBYSJDZ end)*{0},8))/{0}", Math.Pow(10.0, iXSWS)));
SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) ");
}
else
{
//先加点
SQL.Add(string.Format("V_XSBJJSJGB_JGBBJ=CEILING(RoundFix((abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+isnull(JJYZZ,0))*(case when V_XSBJJSJGB_JGBYSJDZ = 0 then 1 else V_XSBJJSJGB_JGBYSJDZ end)*{0},8))/{0}", Math.Pow(10.0, iXSWS)));
SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) ");
}
}
else
{
SQL.Add(string.Format("V_XSBJJSJGB_JGBBJ=CEILING(RoundFix({0}*{1},8))/{1}", sJSGS.Replace("JZ", "XLXSBJDJJYZ_YZZ").Replace("JGBJJ", "abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))"), Math.Pow(10.0, iXSWS)));
SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) ");
}
}
else if (sJSBLFS.Equals("C3"))//C3|材料价汇总进一+表价进一到十位
{
if (sJSGS.Equals(""))
{
//此处根据序号区分先加价还是先加点/扣点
if (XLBJDUtils.JJFirst_JGBYZ(sJGBID))
{
//先加价
SQL.Add(string.Format(" V_XSBJJSJGB_JGBBJ=CEILING(RoundFix((abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))+isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)*(case when V_XSBJJSJGB_JGBYSJDZ = 0 then 1 else V_XSBJJSJGB_JGBYSJDZ end),{0})/10)*10", iXSWS.ToString().Trim()));
SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) ");
}
else
{
//先加点
SQL.Add(string.Format(" V_XSBJJSJGB_JGBBJ=CEILING(RoundFix((abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+isnull(JJYZZ,0))*(case when V_XSBJJSJGB_JGBYSJDZ = 0 then 1 else V_XSBJJSJGB_JGBYSJDZ end),{0})/10)*10", iXSWS.ToString().Trim()));
SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) ");
}
}
else
{
SQL.Add(string.Format("V_XSBJJSJGB_JGBBJ=CEILING(RoundFix({0},{1})/10)*10", sJSGS.Replace("JZ", "XLXSBJDJJYZ_YZZ").Replace("JGBJJ", "abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))"), iXSWS.ToString().Trim()));
SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) ");
}
}
else
{
if (sJSGS.Equals(""))
{
//此处根据序号区分先加价还是先加点/扣点
if (XLBJDUtils.JJFirst_JGBYZ(sJGBID))
{
//先加价
SQL.Add("V_XSBJJSJGB_JGBBJ=(RoundFix((abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))+isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)," + iXSWS + ")*(case when V_XSBJJSJGB_JGBYSJDZ = 0 then 1 else V_XSBJJSJGB_JGBYSJDZ end))");
SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) ");
}
else
{
//先加点
SQL.Add("V_XSBJJSJGB_JGBBJ=(RoundFix((abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+isnull(JJYZZ,0))," + iXSWS + ")*(case when V_XSBJJSJGB_JGBYSJDZ = 0 then 1 else V_XSBJJSJGB_JGBYSJDZ end))");
SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) ");
}
}
else
{
SQL.Add(string.Format("V_XSBJJSJGB_JGBBJ=RoundFix({0},{1})", sJSGS.Replace("JZ", "XLXSBJDJJYZ_YZZ").Replace("JGBJJ", "abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))"), iXSWS));
SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) ");
}
}
}
else
{
if (sJSBLFS.Equals("C1") || sJSBLFS.Equals("C2"))//C1|进一法(材料价各分项进一)、C2|进一法(材料价汇总进一)
{
if (sJSGS.Equals(""))
{
//此处根据序号区分先加价还是先加点/扣点
if (XLBJDUtils.JJFirst_JGBYZ(sJGBID))
{
//先加价
SQL.Add(string.Format("V_XSBJJSJGB_JGBBJ=CEILING(RoundFix((abs(V_XSBJJSJGB_JGBJJ)+isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)*{0},8))/{0}", Math.Pow(10.0, iXSWS)));
SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) ");
}
else
{
//先加点
SQL.Add(string.Format("V_XSBJJSJGB_JGBBJ=CEILING(RoundFix((abs(V_XSBJJSJGB_JGBJJ)*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+isnull(JJYZZ,0))*{0},8))/{0}", Math.Pow(10.0, iXSWS)));
SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) ");
}
}
else
{
SQL.Add(string.Format("V_XSBJJSJGB_JGBBJ=CEILING(RoundFix({0}*{1},8))/{1}", sJSGS.Replace("JZ", "XLXSBJDJJYZ_YZZ").Replace("JGBJJ", "abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))"), Math.Pow(10.0, iXSWS)));
SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) ");
}
}
else if (sJSBLFS.Equals("C3"))//C3|材料价汇总进一+表价进一到十位
{
if (sJSGS.Equals(""))
{
//此处根据序号区分先加价还是先加点/扣点
if (XLBJDUtils.JJFirst_JGBYZ(sJGBID))
{
//先加价
SQL.Add(string.Format(" V_XSBJJSJGB_JGBBJ=CEILING(RoundFix((abs(V_XSBJJSJGB_JGBJJ)+isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0),{0})/10)*10", iXSWS.ToString().Trim()));
SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) ");
}
else
{
//先加点
SQL.Add(string.Format(" V_XSBJJSJGB_JGBBJ=CEILING(RoundFix((abs(V_XSBJJSJGB_JGBJJ)*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+isnull(JJYZZ,0)),{0})/10)*10", iXSWS.ToString().Trim()));
SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) ");
}
}
else
{
SQL.Add(string.Format("V_XSBJJSJGB_JGBBJ=CEILING(RoundFix({0},{1})/10)*10", sJSGS.Replace("JZ", "XLXSBJDJJYZ_YZZ").Replace("JGBJJ", "abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))"), iXSWS.ToString().Trim()));
SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) ");
}
}
else
{
if (sJSGS.Equals(""))
{
//此处根据序号区分先加价还是先加点/扣点
if (XLBJDUtils.JJFirst_JGBYZ(sJGBID))
{
//先加价
SQL.Add("V_XSBJJSJGB_JGBBJ=RoundFix((abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))+isnull(JJYZZ,0))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)," + iXSWS + ")");
SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) ");
}
else
{
//先加点
SQL.Add("V_XSBJJSJGB_JGBBJ=RoundFix(abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))*isnull(JDYZZ,1.0)*isnull(KDYZZ,1.0)*isnull(SXYZZ,1.0)+isnull(JJYZZ,0)," + iXSWS + ")");
SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) ");
}
}
else
{
SQL.Add(string.Format("V_XSBJJSJGB_JGBBJ=RoundFix({0},{1})", sJSGS.Replace("JZ", "XLXSBJDJJYZ_YZZ").Replace("JGBJJ", "abs(RoundFix(V_XSBJJSJGB_JGBJJ," + iXSWS + "))"), iXSWS));
SQL.Add(" * (case when V_XSBJJSJGB_JGBJJ < 0 then (-1) when V_XSBJJSJGB_JGBJJ = 0 then 0 else 1 end) ");
}
}
}
SQL.ParamByName("pID").Value = VnewID;
SQL.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
}
#endregion
#endregion
#region GridView增加列
/// <summary>
/// 设置etCheckBox列的属性
/// </summary>
/// <param name="sDataField"></param>
/// <param name="HeadText"></param>
/// <param name="Width"></param>
/// <param name="CheckBox"></param>
private void AddColumn(string sDataField, string HeadText, int Width, TEditType CheckBox)
{
BoundField Column = new BoundField();
Column.DataField = sDataField;
Column.HeaderText = HeadText;
Column.ItemStyle.Width = (Unit)Width;
Column.HeaderStyle.Width = (Unit)Width;
grdXLBJDMX.Columns.Add(Column);
gtGridView_Column ColumnEx = new gtGridView_Column();
ColumnEx.DataField = sDataField;
ColumnEx.EditType = TEditType.etCheckBox;
grdXLBJDMX.ColumnsEx.Insert(0, ColumnEx);
}
/// <summary>
/// 设置etString列的属性
/// </summary>
/// <param name="sDataField"></param>
/// <param name="HeadText"></param>
/// <param name="Width"></param>
private void AddColumn(string sDataField, string HeadText, int Width)
{
BoundField Column = new BoundField();
Column.DataField = sDataField;
Column.HeaderText = HeadText;
Column.ItemStyle.Width = (Unit)Width;
Column.HeaderStyle.Width = (Unit)Width;
grdXLBJDMX.Columns.Add(Column);
gtGridView_Column ColumnEx = new gtGridView_Column();
ColumnEx.DataField = sDataField;
ColumnEx.EditType = TEditType.etString;
ColumnEx.ShowHint = true;
grdXLBJDMX.ColumnsEx.Insert(0, ColumnEx);
}
/// <summary>
/// 设置etString列的属性
/// </summary>
/// <param name="sDataField"></param>
/// <param name="HeadText"></param>
/// <param name="Width"></param>
/// <param name="Align"></param>
private void AddColumn(string sDataField, string HeadText, int Width, HorizontalAlign Align)
{
BoundField Column = new BoundField();
Column.DataField = sDataField;
Column.HeaderText = HeadText;
Column.ItemStyle.Width = (Unit)Width;
Column.ItemStyle.HorizontalAlign = Align;
Column.HeaderStyle.Width = (Unit)Width;
grdXLBJDMX.Columns.Add(Column);
gtGridView_Column ColumnEx = new gtGridView_Column();
ColumnEx.DataField = sDataField;
ColumnEx.EditType = TEditType.etString;
ColumnEx.ShowHint = true;
grdXLBJDMX.ColumnsEx.Insert(0, ColumnEx);
}
/// <summary>
/// 设置etNumber列的属
/// </summary>
/// <param name="sDataField"></param>
/// <param name="HeadText"></param>
/// <param name="NumberDecimalPlace"></param>
/// <param name="Width"></param>
private void AddColumn(string sDataField, string HeadText, int NumberDecimalPlace, int Width)
{
BoundField Column = new BoundField();
Column.DataField = sDataField;
Column.HeaderText = HeadText;
Column.ItemStyle.Width = (Unit)Width;
Column.HeaderStyle.Width = (Unit)Width;
Column.ItemStyle.HorizontalAlign = HorizontalAlign.Right;
grdXLBJDMX.Columns.Add(Column);
gtGridView_Column ColumnEx = new gtGridView_Column();
ColumnEx.DataField = sDataField;
ColumnEx.EditType = TEditType.etNumber;
ColumnEx.ShowHint = true;
ColumnEx.NumberDecimalPlace = NumberDecimalPlace;
grdXLBJDMX.ColumnsEx.Insert(0, ColumnEx);
}
/// <summary>
/// 设置etDateTime列的属性
/// </summary>
/// <param name="sDataField"></param>
/// <param name="HeadText"></param>
/// <param name="DateTimeKind"></param>
/// <param name="Width"></param>
private void AddColumn(string sDataField, string HeadText, TDateTimeEditKinds DateTimeKind)
{
BoundField Column = new BoundField();
Column.DataField = sDataField;
Column.HeaderText = HeadText;
Column.ItemStyle.Width = (Unit)(DateTimeKind == TDateTimeEditKinds.dtDateTime ? 125 : 72);
Column.HeaderStyle.Width = (Unit)(DateTimeKind == TDateTimeEditKinds.dtDateTime ? 125 : 72);
grdXLBJDMX.Columns.Add(Column);
gtGridView_Column ColumnEx = new gtGridView_Column();
ColumnEx.DataField = sDataField;
ColumnEx.EditType = TEditType.etDateTime;
ColumnEx.DateTimeEditKins = DateTimeKind;
grdXLBJDMX.ColumnsEx.Insert(0, ColumnEx);
}
#endregion
}
}