This commit is contained in:
2026-08-21 17:03:02 +08:00
commit f065129b20
2292 changed files with 666241 additions and 0 deletions
+824
View File
@@ -0,0 +1,824 @@
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.Data;
using GThinking.N_MISPRO;
using GThinking.N_WORKFLOW;
using System.Collections.Generic;
using GThinking.N_MISPRO.MISPROAS;
using System.Text;
namespace GThinking.N_XLXSBJ
{
public partial class CLCBList : SingleGridBase
{
CLCB entity = new CLCB();
CLCB_M queryentity = new CLCB_M();
//报价材料
Dictionary<string, string> dicHeaderTextCLMC = new Dictionary<string, string>();
Dictionary<string, string> dicHeaderTextCLJG = new Dictionary<string, string>();
//材料物料
Dictionary<string, string> dicHeaderTextCLWL = new Dictionary<string, string>();
protected void Page_Load(object sender, EventArgs e)
{
this.UMID = 100860034;
this.UMName = "线缆销售报价材料成本";
this.CurMaster = Master;
this.ModuleGV = ContentGrid;
this.CurEntity = entity;
this.CurQueryEntity = queryentity;
this.PageHeight = 500;
this.PageWidth = 700;
this.sURLTarget = "CLCBInfo.aspx";
this.sQueryURLTarget = "CLCBQuery.aspx";
base.DataKeyNames = new string[] { "XLXSCLQD_XLXHID", "XLXSCLQD_XLGGID", "XLXSCLQD_XLBZID", "XLXSCLQD_DYDJID", "HSJGBZ" };
if (XLBJDUtils.GetDefaultBJU003(GetOption("BJU003")).Equals("M"))
{
ContentGrid.FindColumnExByFieldName("CLCB").NumberDecimalPlace = 5;
for (int i = 1; i <= 80; i++)
{
ContentGrid.FindColumnExByFieldName("CLJG" + i.ToString().PadLeft(2, '0')).NumberDecimalPlace = 5;
}
}
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("HSJGBZ").Value = "True";
CurQueryEntity.FieldByName("PXFS").Value = "型号+序号";
}
base.InitEntityByCondition();
if (!CurQueryEntity.FieldByName("XSWLCB").Value.Trim().ToUpper().Equals("TRUE"))
{
ContentGrid.FindColumnByFieldName("WLID").Visible = false;
ContentGrid.FindColumnByFieldName("WLXX").Visible = false;
}
base.InitPage();
//this.ModuleGV.OnClientDblClick = "return false;";
if (!IsPostBack)
{
if (IsDefaultExecute)
Master_OnStandardQuery(null, null);
else
{
IfExistMC_Get();
initGrid();
}
}
}
#region 模板继承事件
protected override void Master_OnStandardQuery(object sender, EventArgs e)
{
base.InitEntityByCondition();
base.Master_OnStandardQuery(sender, e);
IfExistMC_Get();
initGrid();
entity.EntityTable.QuerySelSql = GetQuerySql().ToString();
entity.GridDataBind(ContentGrid, tSession);
}
protected override void moduleGV_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
base.InitEntityByCondition();
IfExistMC_Get();
initGrid();
entity.EntityTable.QuerySelSql = GetQuerySql().ToString();
ContentGrid.SelectedIndex = -1;
base.moduleGV_PageIndexChanging(sender, e);
}
protected override void moduleGV_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
LinkPageParam.AddString("XLXSCLQD_XLXHID", ContentGrid.DataKeys[e.Row.RowIndex]["XLXSCLQD_XLXHID"].ToString().Trim());
LinkPageParam.AddString("XLXSCLQD_XLGGID", ContentGrid.DataKeys[e.Row.RowIndex]["XLXSCLQD_XLGGID"].ToString().Trim());
LinkPageParam.AddString("XLXSCLQD_XLBZID", ContentGrid.DataKeys[e.Row.RowIndex]["XLXSCLQD_XLBZID"].ToString().Trim());
LinkPageParam.AddString("XLXSCLQD_DYDJID", ContentGrid.DataKeys[e.Row.RowIndex]["XLXSCLQD_DYDJID"].ToString().Trim());
LinkPageParam.AddString("HSJGBZ", ContentGrid.DataKeys[e.Row.RowIndex]["HSJGBZ"].ToString().Trim());
}
base.moduleGV_RowDataBound(sender, e);
}
#endregion
#region 私有函数
private StringBuilder GetQuerySql()
{
bool bHSJGBZ = CurQueryEntity.FieldByName("HSJGBZ").Value.Trim().ToUpper().Equals("TRUE");
string sCZBLX = "";
if (!string.IsNullOrEmpty(CurQueryEntity.FieldByName("JGCZBID").Value.Trim()))
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
sql.Clear();
sql.Add(" SELECT XLJGCZBML_CZBLX from XLJGCZBML ");
sql.Add(" where XLJGCZBML_JGCZBID=:pJGCZBID ");
sql.ParamByName("pJGCZBID").Value = CurQueryEntity.FieldByName("JGCZBID").Value.Trim().Split('|')[0];
DataSet ds = dberp.OpenDataSet(sql);
if (ds.Tables[0].Rows.Count > 0)
{
sCZBLX = ds.Tables[0].Rows[0][0].ToString().Trim();
}
}
StringBuilder strSQL = new StringBuilder();
strSQL.AppendLine(" select XLXSCLQD_XLXHID, XLXSCLQD_XLGGID, XLXSCLQD_XLBZID,RTRIM(XLXSCLQD_XLBZID)||'|'|| XLBZ_XLBZLXMC as XLBZ,XLXSCLQD_DYDJID,");
if (CurQueryEntity.FieldByName("XSWLCB").Value.Trim().ToUpper().Equals("TRUE"))
strSQL.AppendLine("ISNULL(tmpWL.WL_WLID,' ') as WLID, rtrim(ISNULL(tmpWL.WL_MC,' ')) || ' ' || rtrim(ISNULL(tmpWL.WL_GG,' ')) || ' ' || rtrim(ISNULL(tmpWL.WL_TZ,' ')) || ' ' || rtrim(ISNULL(tmpWL.WL_CL,' ')) as WLXX,");
else
strSQL.AppendLine(" ' ' as WLID,' ' as WLXX,");
strSQL.AppendLine(" '" + GetOption("BJU003") + "' as JLDW, XLXSCLQD_CLZL,");
strSQL.AppendLine("XLXSCLQD_SL01, XLXSCLQD_SL02, XLXSCLQD_SL03, XLXSCLQD_SL04, XLXSCLQD_SL05, XLXSCLQD_SL06, XLXSCLQD_SL07, XLXSCLQD_SL08, XLXSCLQD_SL09, XLXSCLQD_SL10,");
strSQL.AppendLine("XLXSCLQD_SL11, XLXSCLQD_SL12, XLXSCLQD_SL13, XLXSCLQD_SL14, XLXSCLQD_SL15, XLXSCLQD_SL16, XLXSCLQD_SL17, XLXSCLQD_SL18, XLXSCLQD_SL19, XLXSCLQD_SL20,");
strSQL.AppendLine("XLXSCLQD_SL21, XLXSCLQD_SL22, XLXSCLQD_SL23, XLXSCLQD_SL24, XLXSCLQD_SL25, XLXSCLQD_SL26, XLXSCLQD_SL27, XLXSCLQD_SL28, XLXSCLQD_SL29, XLXSCLQD_SL30,");
strSQL.AppendLine("XLXSCLQD_SL31, XLXSCLQD_SL32, XLXSCLQD_SL33, XLXSCLQD_SL34, XLXSCLQD_SL35, XLXSCLQD_SL36, XLXSCLQD_SL37, XLXSCLQD_SL38, XLXSCLQD_SL39, XLXSCLQD_SL40,");
strSQL.AppendLine("XLXSCLQD_SL41, XLXSCLQD_SL42, XLXSCLQD_SL43, XLXSCLQD_SL44, XLXSCLQD_SL45, XLXSCLQD_SL46, XLXSCLQD_SL47, XLXSCLQD_SL48, XLXSCLQD_SL49, XLXSCLQD_SL50,");
strSQL.AppendLine("XLXSCLQD_SL51, XLXSCLQD_SL52, XLXSCLQD_SL53, XLXSCLQD_SL54, XLXSCLQD_SL55, XLXSCLQD_SL56, XLXSCLQD_SL57, XLXSCLQD_SL58, XLXSCLQD_SL59, XLXSCLQD_SL60,");
strSQL.AppendLine("XLXSCLQD_SL61, XLXSCLQD_SL62, XLXSCLQD_SL63, XLXSCLQD_SL64, XLXSCLQD_SL65, XLXSCLQD_SL66, XLXSCLQD_SL67, XLXSCLQD_SL68, XLXSCLQD_SL69, XLXSCLQD_SL70,");
strSQL.AppendLine("XLXSCLQD_SL71, XLXSCLQD_SL72, XLXSCLQD_SL73, XLXSCLQD_SL74, XLXSCLQD_SL75, XLXSCLQD_SL76, XLXSCLQD_SL77, XLXSCLQD_SL78, XLXSCLQD_SL79, XLXSCLQD_SL80,");
string strCLCB = "(0";
for (int i = 1; i <= 80; i++)
{
//此处需要去除有物料的,变更为0
string sCLQDL = "第" + i.ToString().PadLeft(2, '0') + "列";
if (dicHeaderTextCLJG.ContainsKey(sCLQDL) && !dicHeaderTextCLWL.ContainsKey(sCLQDL))
{
double tmpCLJG = CMISproConvert.StrToFloat(dicHeaderTextCLJG[sCLQDL].Replace("元/Kg", ""), 0);
strSQL.AppendLine(string.Format("RoundFix(XLXSCLQD_SL{0},6)*{1}*XLXSCLQD_CLJGBL{0}*(1+XLXSCLQD_SHL{0}/100) as CLJG{0},", i.ToString().PadLeft(2, '0'), tmpCLJG));
strCLCB += string.Format("+RoundFix(XLXSCLQD_SL{0},6)*{1}*XLXSCLQD_CLJGBL{0}*(1+XLXSCLQD_SHL{0}/100)", i.ToString().PadLeft(2, '0'), tmpCLJG);
}
else
{
strSQL.AppendLine(string.Format("0 as CLJG{0},", i.ToString().PadLeft(2, '0')));
}
//增加物料列----对应列
if (dicHeaderTextCLWL.ContainsKey(sCLQDL))
{
strSQL.AppendLine(string.Format("rtrim(XLXSCLQDWL_WLID{0}) || '|' || rtrim(ISNULL(WL{0}.WL_MC,' ')) || ' ' || rtrim(ISNULL(WL{0}.WL_GG,' ')) as XLXSCLWL{0},\r\n", i.ToString().PadLeft(2, '0')));
}
else
{
strSQL.AppendLine(string.Format("' ' as XLXSCLWL{0},", i.ToString().PadLeft(2, '0')));
}
if (dicHeaderTextCLWL.ContainsKey(sCLQDL))
{
//此处需要保持 CLJG01字段在
if (bHSJGBZ)
{
strSQL.AppendLine(string.Format(" isnull(XLXSWLHQ{0}.XLXSWLHQ_HSJG,0) as XLXSCLWLJG{0}, ", i.ToString().PadLeft(2, '0')));
strSQL.AppendLine(string.Format(" RoundFix(RoundFix(XLXSCLQD_SL{0},6)*XLXSCLQD_CLJGBL{0}*(1+XLXSCLQD_SHL{0}/100)*isnull(XLXSWLHQ{0}.XLXSWLHQ_HSJG,0), 5) as XLXSCLWLCB{0}, ", i.ToString().PadLeft(2, '0')));
strCLCB += string.Format(" +RoundFix(RoundFix(XLXSCLQD_SL{0},6)*XLXSCLQD_CLJGBL{0}*(1+XLXSCLQD_SHL{0}/100)*isnull(XLXSWLHQ{0}.XLXSWLHQ_HSJG,0), 5) ", i.ToString().PadLeft(2, '0'));
}
else
{
strSQL.AppendLine(string.Format(" isnull(XLXSWLHQ{0}.XLXSWLHQ_WSJG,0) as XLXSCLWLJG{0}, ", i.ToString().PadLeft(2, '0')));
strSQL.AppendLine(string.Format(" RoundFix(RoundFix(XLXSCLQD_SL{0},6)*XLXSCLQD_CLJGBL{0}*(1+XLXSCLQD_SHL{0}/100)*isnull(XLXSWLHQ{0}.XLXSWLHQ_WSJG,0), 5) as XLXSCLWLCB{0}, ", i.ToString().PadLeft(2, '0')));
strCLCB += string.Format(" +RoundFix(RoundFix(XLXSCLQD_SL{0},6)*XLXSCLQD_CLJGBL{0}*(1+XLXSCLQD_SHL{0}/100)*isnull(XLXSWLHQ{0}.XLXSWLHQ_WSJG,0), 5) ", i.ToString().PadLeft(2, '0'));
}
}
else
{
strSQL.AppendLine(string.Format(" 0 as XLXSCLWLJG{0}, ", i.ToString().PadLeft(2, '0')));
strSQL.AppendLine(string.Format(" 0 as XLXSCLWLCB{0}, ", i.ToString().PadLeft(2, '0')));
}
}
strCLCB += ")";
strSQL.AppendLine(strCLCB + " as CLCB,");
strSQL.AppendLine(" XLXSCLQD_BZ, XLXSCLQD_WHR, XLXSCLQD_WHRID, XLXSCLQD_WHSJ, ");
if (bHSJGBZ)
{
strSQL.AppendLine("'Y' as HSJGBZ ");
}
else
{
strSQL.AppendLine("'N' as HSJGBZ ");
}
strSQL.AppendLine(" from XLXSCLQD ");
if (CurQueryEntity.FieldByName("XSWLCB").Value.Trim().ToUpper().Equals("TRUE"))
{
strSQL.AppendLine(@"left join (select XSBJXHTH_BJXLXHID as XLXHID,XLXLB_XLGGID as XLGGID,XLXLB_XLBZID as XLBZID,XLXLB_DYDJID as DYDJID,XLXLB_WLID
from (
select XLXLB_XLXHID,XLXLB_XLGGID,XLXLB_XLBZID,XLXLB_DYDJID,XLXLB_WLID
from XLXLB
where 1=1
and isnull(XLXLB_TYBZ,' ')<> 'Y'
and exists(select 1 from WL where WL_WLID=XLXLB_WLID and isnull(WL_TYBZ,' ')<>'Y')
and exists(select 1 from XSBJXHTH where XSBJXHTH_XLXHID = XLXLB_XLXHID)
) tmpXL left join XSBJXHTH on XSBJXHTH_XLXHID=XLXLB_XLXHID
union all
select XLXLB_XLXHID as XLXHID,XLXLB_XLGGID as XLGGID,XLXLB_XLBZID as XLBZID,XLXLB_DYDJID as DYDJID,XLXLB_WLID
from XLXLB
where isnull(XLXLB_TYBZ,' ')<>'Y'
and exists(select 1 from WL where WL_WLID=XLXLB_WLID and isnull(WL_TYBZ,' ')<>'Y')
and not exists(select 1 from XSBJXHTH where XSBJXHTH_XLXHID = XLXLB_XLXHID )
) a on a.XLXHID=XLXSCLQD_XLXHID and a.XLGGID=replace(XLXSCLQD_XLGGID,'*','×') and a.XLBZID=XLXSCLQD_XLBZID and a.DYDJID=XLXSCLQD_DYDJID
left join WL tmpWL on WL_WLID =XLXLB_WLID ");
}
strSQL.AppendLine("left join XLBZ on XLBZ_XLBZID = XLXSCLQD_XLBZID ");
strSQL.AppendLine(" left join XLXSCLQDWL ON XLXSCLQDWL_JGCZBID = XLXSCLQD_JGCZBID AND XLXSCLQDWL_JGCZBBBID = XLXSCLQD_JGCZBBBID and XLXSCLQD_JGCZBXH = XLXSCLQDWL_JGCZBXH AND XLXSCLQDWL_DRHH = XLXSCLQD_DRHH ");
//增加物料列----使用关联的物料表
for (int i = 1; i <= 80; i++)
{
if (dicHeaderTextCLWL.ContainsKey("第" + i.ToString().PadLeft(2, '0') + "列"))
{
strSQL.AppendLine(string.Format("left join WL WL{0} ON WL{0}.WL_WLID =XLXSCLQDWL_WLID{0} ", i.ToString().PadLeft(2, '0')));
strSQL.AppendLine(" left join ");
strSQL.AppendLine(" ( ");
strSQL.AppendLine(" select XLXSWLHQ_WLID,XLXSWLHQ_WSJG,XLXSWLHQ_HSJG,XLXSWLHQ_WSJGF,XLXSWLHQ_HSJGF,XLXSWLHQ_WSCGJG,XLXSWLHQ_HSCGJG,XLXSWLHQ_YXQS,XLXSWLHQ_YXQZ,XLXSWLHQ_BZ,XLXSWLHQ_WHRID,XLXSWLHQ_WHR,XLXSWLHQ_WHSJ ");
strSQL.AppendLine(" from XLXSWLHQ, ");
strSQL.AppendLine(" ( ");
strSQL.AppendLine(" select XLXSWLHQ_WLID as WLID,max(XLXSWLHQ_YXQS) as maxYXQS ");
strSQL.AppendLine(" from XLXSWLHQ ");
strSQL.AppendLine(" where XLXSWLHQ_JGBID=' ' ");
strSQL.AppendLine(" and XLXSWLHQ_YXQS<=:pCKRQ and (XLXSWLHQ_YXQZ is null or XLXSWLHQ_YXQZ>=:pCKRQ) ");
strSQL.AppendLine(" group by XLXSWLHQ_WLID ");
strSQL.AppendLine(" ) b ");
strSQL.AppendLine(" where XLXSWLHQ_JGBID=' ' ");
strSQL.AppendLine(" and XLXSWLHQ_WLID=WLID ");
strSQL.AppendLine(" and XLXSWLHQ_YXQS=maxYXQS ");
strSQL.AppendLine(string.Format(" ) XLXSWLHQ{0} on XLXSWLHQ{0}.XLXSWLHQ_WLID=WL{0}.WL_WLID ", i.ToString().PadLeft(2, '0')));
}
}
if (dicHeaderTextCLWL.Count > 0)
{
entity.Param.Add("pCKRQ", DateTime.Now.ToShortDateString());
}
if (CurQueryEntity.FieldByName("PXFS").Value.Trim().Equals("尺重表内容导入行号"))
{
if (sCZBLX.Equals("B"))
{
strSQL.AppendLine(" left join XLJGCZBNR on XLJGCZBNR_JGCZBID = XLXSCLQD_JGCZBID and XLJGCZBNR_JGCZBBBID = XLXSCLQD_JGCZBBBID and XLJGCZBNR_DRHH = XLXSCLQD_DRHH ");
}
else if (sCZBLX.Equals("Z") || sCZBLX.Equals("A") || sCZBLX.Equals("C") || sCZBLX.Equals("G"))
{
strSQL.AppendLine(" left join XLXHJGCZBNR on XLXHJGCZBNR_JGCZBID = XLXSCLQD_JGCZBID and XLXHJGCZBNR_JGCZBBBID = XLXSCLQD_JGCZBBBID ");
strSQL.AppendLine(" and XLXHJGCZBNR_JGCZBXH = XLXSCLQD_JGCZBXH and XLXHJGCZBNR_DRHH = XLXSCLQD_DRHH ");
}
}
strSQL.AppendLine(" where 1=1 and XLXSCLQD_WPID ='ZZZZ' ");
if (!string.IsNullOrEmpty(CurQueryEntity.FieldByName("JGCZBID").Value.Trim()))
{
strSQL.AppendLine(" and XLXSCLQD_JGCZBID = :pJGCZBID ");
entity.Param.Add("pJGCZBID", CurQueryEntity.FieldByName("JGCZBID").Value.Trim().Split('|')[0]);
}
if (!string.IsNullOrEmpty(CurQueryEntity.FieldByName("JGCZBBBID").Value.Trim()))
{
strSQL.AppendLine(" and XLXSCLQD_JGCZBBBID = :pJGCZBBBID ");
entity.Param.Add("pJGCZBBBID", CurQueryEntity.FieldByName("JGCZBBBID").Value.Trim());
}
if (!string.IsNullOrEmpty(CurQueryEntity.FieldByName("XLXHID").Value.Trim()))
{
strSQL.AppendLine(" and XLXSCLQD_XLXHID = :pXLXHID ");
entity.Param.Add("pXLXHID", CurQueryEntity.FieldByName("XLXHID").Value.Trim());
}
if (!string.IsNullOrEmpty(CurQueryEntity.FieldByName("XLGGID").Value.Trim()))
{
if (CurQueryEntity.FieldByName("XLGGID").Value.Trim().Contains("*"))
{
strSQL.AppendLine(" and (XLXSCLQD_XLGGID like :pXLGG or XLXSCLQD_XLGGID like :pXLGG2)");
entity.Param.Add("pXLGG", "%" + CurQueryEntity.FieldByName("XLGGID").Value.Trim() + "%");
entity.Param.Add("pXLGG2", "%" + CurQueryEntity.FieldByName("XLGGID").Value.Trim().Replace("*", "×") + "%");
}
else
{
strSQL.AppendLine(" and XLXSCLQD_XLGGID like :pXLGGID ");
entity.Param.Add("pXLGGID", "%" + CurQueryEntity.FieldByName("XLGGID").Value.Trim() + "%");
}
}
if (!string.IsNullOrEmpty(CurQueryEntity.FieldByName("ST").Value.Trim()))
{
strSQL.AppendLine(" and XLXSCLQD_XLBZID = :pST ");
entity.Param.Add("pST", CurQueryEntity.FieldByName("ST").Value.Trim());
}
if (!string.IsNullOrEmpty(CurQueryEntity.FieldByName("DYDJ").Value.Trim()))
{
strSQL.AppendLine(" and XLXSCLQD_DYDJID = :pDYDJ ");
entity.Param.Add("pDYDJ", CurQueryEntity.FieldByName("DYDJ").Value.Trim());
}
if (CurQueryEntity.FieldByName("PXFS").Value.Trim().Equals("型号+序号"))
{
strSQL.AppendLine("order by XLXSCLQD_XLXHID,XLXSCLQD_XH ");
}
else if (CurQueryEntity.FieldByName("PXFS").Value.Trim().Equals("尺重表内容导入行号"))
{
if (sCZBLX.Equals("B"))
{
strSQL.AppendLine(" order by XLJGCZBNR_DRHH ");
}
else if (sCZBLX.Equals("Z") || sCZBLX.Equals("A") || sCZBLX.Equals("C") || sCZBLX.Equals("G"))
{
strSQL.AppendLine(" order by XLXHJGCZBNR_JGCZBXH,XLXHJGCZBNR_DRHH ");
}
else
{
strSQL.AppendLine(" order by XLXSCLQD_XLXHID,XLXSCLQD_XH ");
}
}
else
{
strSQL.AppendLine(" order by XLXSCLQD_XLXHID,XLXSCLQD_XH ");
}
return strSQL;
}
public void IfExistMC_Get()
{
dicHeaderTextCLMC.Clear();
dicHeaderTextCLJG.Clear();
dicHeaderTextCLWL.Clear();
if (string.IsNullOrEmpty(CurQueryEntity.FieldByName("JGCZBID").Value.Trim()))
{
for (int i = 1; i <= 80; i++)
{
ContentGrid.Columns[5 * i + 4].Visible = false;
ContentGrid.Columns[5 * i + 5].Visible = false;
ContentGrid.Columns[5 * i + 6].Visible = false;
}
return;
}
int iNumberDecimal = XLBJDUtils.BJCLPriceDecimal;
bool bHSJGBZ = CurQueryEntity.FieldByName("HSJGBZ").Value.Trim().ToUpper().Equals("TRUE");
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
DataSet ds;
sql.Add(" select XLJGCZBLM_CLQDL,XLXSBJCL_BJHQ, ");
sql.Add(" case when isnull(XLXSBJCL_BJCLID,' ')=' ' then XLJGCZBLM_CZBLMMC else XLXSBJCL_BJCLMC end as CLMC,");
if (bHSJGBZ)
{
sql.Add(" case when isnull(XLXSBJCL_BJCLID,' ')=' ' then 0 else isnull(XLXSCLHQ_HSJG,0.0) end as CLJG ");
}
else
{
sql.Add(" case when isnull(XLXSBJCL_BJCLID,' ')=' ' then 0 else isnull(XLXSCLHQ_WSJG,0.0) end as CLJG ");
}
sql.Add(" from XLJGCZBLM ");
sql.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLJGCZBLM_BJCLID");
//sql.Add(" left join XLJGCZBML on XLJGCZBML_JGCZBID = XLJGCZBLM_JGCZBID");
sql.Add(" left join");
sql.Add(" ( ");
sql.Add(" select XLXSCLHQ_BJCLID, ");
if (bHSJGBZ)
{
sql.Add(" XLXSCLHQ_HSJG ");
}
else
{
sql.Add(" XLXSCLHQ_WSJG ");
}
sql.Add(" from XLXSCLHQ, ");
sql.Add(" ( ");
sql.Add(" select XLXSCLHQ_BJCLID as BJCLID,max(XLXSCLHQ_YXQS) as maxYXQS ");
sql.Add(" from XLXSCLHQ ");
sql.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ' ");
sql.Add(" and XLXSCLHQ_YXQS<=:pRQ ");
sql.Add(" and (XLXSCLHQ_YXQZ is null or XLXSCLHQ_YXQZ>=:pRQ) ");
sql.Add(" group by XLXSCLHQ_BJCLID ");
sql.Add(" ) a ");
sql.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ' ");
sql.Add(" and XLXSCLHQ_BJCLID=BJCLID ");
sql.Add(" and XLXSCLHQ_YXQS=maxYXQS ");
sql.Add(" ) b on XLXSCLHQ_BJCLID=XLXSBJCL_BJCLID ");
sql.Add(" where XLJGCZBLM_JGCZBID=:pJGCZBID and XLJGCZBLM_JGCZBBBID=:pJGCZBBBID and isnull(XLJGCZBLM_CLQDL,' ')<>' '");
sql.Add(" order by XLJGCZBLM_CLQDL ");
sql.ParamByName("pJGCZBID").Value = CurQueryEntity.FieldByName("JGCZBID").Value.Trim().Split('|')[0];
sql.ParamByName("pJGCZBBBID").Value = CurQueryEntity.FieldByName("JGCZBBBID").Value.Trim();
sql.ParamByName("pRQ").Value = DateTime.Now.ToShortDateString();
ds = dberp.OpenDataSet(sql);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
dicHeaderTextCLMC.Add((ds.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim()), ds.Tables[0].Rows[i]["CLMC"].ToString().Trim());
dicHeaderTextCLJG.Add((ds.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim()), XLBJDUtils.strPadRight(ds.Tables[0].Rows[i]["CLJG"].ToString().Trim(),iNumberDecimal) + "元/Kg");
//添加物料列
if (ds.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim().Equals("2"))
{
dicHeaderTextCLWL.Add((ds.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim()), ds.Tables[0].Rows[i]["CLMC"].ToString().Trim());
}
}
SetColumnsVisible();
}
private void initGrid()
{
for (int i = 1; i <= 80; i++)
{
string sCLQDL = "第" + i.ToString().PadLeft(2, '0') + "列";
string sExist = "";
if (dicHeaderTextCLMC.ContainsKey(sCLQDL))
{
sExist = dicHeaderTextCLMC[sCLQDL].Trim();
}
if (!sExist.Equals(""))
{
ContentGrid.FindColumnByFieldName("XLXSCLQD_SL" + i.ToString().PadLeft(2, '0')).HeaderText = sExist;
}
string sExist2 = "";
if (dicHeaderTextCLJG.ContainsKey(sCLQDL))
{
sExist2 = dicHeaderTextCLJG[sCLQDL].Trim();
}
if (!sExist2.Equals(""))
{
ContentGrid.FindColumnByFieldName("CLJG" + i.ToString().PadLeft(2, '0')).HeaderText = sExist2;
}
}
}
private void SetColumnsVisible()
{
if (dicHeaderTextCLMC.Count > 0)
{
for (int i = 1; i <= 80; i++)
{
string sCLQDL = "第" + i.ToString().PadLeft(2, '0') + "列";
string sExist = "";
if (dicHeaderTextCLMC.ContainsKey(sCLQDL))
{
sExist = dicHeaderTextCLMC[sCLQDL].Trim();
}
if (sExist.Equals(""))
{
//报价材料
ContentGrid.FindColumnByFieldName("XLXSCLQD_SL" + i.ToString().PadLeft(2, '0')).Visible = false;
ContentGrid.FindColumnByFieldName("CLJG" + i.ToString().PadLeft(2, '0')).Visible = false;
//材料物料
ContentGrid.FindColumnByFieldName("XLXSCLWL" + i.ToString().PadLeft(2, '0')).Visible = false;
ContentGrid.FindColumnByFieldName("XLXSCLWLJG" + i.ToString().PadLeft(2, '0')).Visible = false;
ContentGrid.FindColumnByFieldName("XLXSCLWLCB" + i.ToString().PadLeft(2, '0')).Visible = false;
}
if (!dicHeaderTextCLWL.ContainsKey(sCLQDL))
{
//材料物料
ContentGrid.FindColumnByFieldName("XLXSCLWL" + i.ToString().PadLeft(2, '0')).Visible = false;
ContentGrid.FindColumnByFieldName("XLXSCLWLJG" + i.ToString().PadLeft(2, '0')).Visible = false;
ContentGrid.FindColumnByFieldName("XLXSCLWLCB" + i.ToString().PadLeft(2, '0')).Visible = false;
}
else
{
ContentGrid.FindColumnByFieldName("CLJG" + i.ToString().PadLeft(2, '0')).Visible = false;
}
}
}
}
//数字列号为字母列号 1-A 27->AA
//入口为SL的前一列,所以开始列包含重量和成本时需要减去1,因为开始列本身已经前移,结束列则不需要减一
public string GetNumTolet(int Index)
{
int dividend = Index;
string columnName = string.Empty;
while (dividend > 0)
{
int modulo = (dividend - 1) % 26;
columnName = Convert.ToChar(65 + modulo) + columnName;
dividend = (dividend - modulo) / 26;
}
return columnName;
}
#endregion
#region 导出数据
protected void btnSJDC_Click(object sender, EventArgs e)
{
base.InitEntityByCondition();
int iNumberDecimal = XLBJDUtils.BJCLPriceDecimal;
bool bHSJGBZ = CurQueryEntity.FieldByName("HSJGBZ").Value.Trim().ToUpper().Equals("TRUE");
if (CurQueryEntity.FieldByName("JGCZBID").Value.Trim().Equals(""))
{
ShowMessage("请先查询数据!");
return;
}
dicHeaderTextCLMC.Clear();
dicHeaderTextCLJG.Clear();
dicHeaderTextCLWL.Clear();
string sFileName = "";
string sDateNow = DateTime.Now.Year.ToString().Trim().PadLeft(2, '0') + DateTime.Now.Month.ToString().Trim().PadLeft(2, '0')
+ DateTime.Now.Day.ToString().Trim().PadLeft(2, '0') + DateTime.Now.Hour.ToString().Trim().PadLeft(2, '0')
+ DateTime.Now.Minute.ToString().Trim().PadLeft(2, '0');
sFileName = sDateNow + "材料成本";
string m_tmpFilePath = FileService.CombineTempPath(sFileName + ".xlsx");
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
SQL.Clear();
SQL.Add(" select XLJGCZBLM_CLQDL,XLXSBJCL_BJHQ, ");
SQL.Add(" case when isnull(XLXSBJCL_BJCLID,' ')=' ' then XLJGCZBLM_CZBLMMC else XLXSBJCL_BJCLMC end as CLMC,");
if (bHSJGBZ)
{
SQL.Add(" case when isnull(XLXSBJCL_BJCLID,' ')=' ' then 0 else isnull(XLXSCLHQ_HSJG,0.0) end as CLJG ");
}
else
{
SQL.Add(" case when isnull(XLXSBJCL_BJCLID,' ')=' ' then 0 else isnull(XLXSCLHQ_WSJG,0.0) end as CLJG ");
}
SQL.Add(" from XLJGCZBLM ");
SQL.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLJGCZBLM_BJCLID");
SQL.Add(" left join");
SQL.Add(" ( ");
SQL.Add(" select XLXSCLHQ_BJCLID, ");
if (bHSJGBZ)
{
SQL.Add(" XLXSCLHQ_HSJG ");
}
else
{
SQL.Add(" XLXSCLHQ_WSJG ");
}
SQL.Add(" from XLXSCLHQ, ");
SQL.Add(" ( ");
SQL.Add(" select XLXSCLHQ_BJCLID as BJCLID,max(XLXSCLHQ_YXQS) as maxYXQS ");
SQL.Add(" from XLXSCLHQ ");
SQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ' ");
SQL.Add(" and XLXSCLHQ_YXQS<=:pRQ ");
SQL.Add(" and (XLXSCLHQ_YXQZ is null or XLXSCLHQ_YXQZ>=:pRQ) ");
SQL.Add(" group by XLXSCLHQ_BJCLID ");
SQL.Add(" ) a ");
SQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ' ");
SQL.Add(" and XLXSCLHQ_BJCLID=BJCLID ");
SQL.Add(" and XLXSCLHQ_YXQS=maxYXQS ");
SQL.Add(" ) b on XLXSCLHQ_BJCLID=XLXSBJCL_BJCLID ");
SQL.Add(" where XLJGCZBLM_JGCZBID=:pJGCZBID and XLJGCZBLM_JGCZBBBID=:pJGCZBBBID and isnull(XLJGCZBLM_CLQDL,' ')<>' '");
SQL.Add(" order by XLJGCZBLM_CLQDL ");
SQL.ParamByName("pJGCZBID").Value = CurQueryEntity.FieldByName("JGCZBID").Value.Trim().Split('|')[0];
SQL.ParamByName("pJGCZBBBID").Value = CurQueryEntity.FieldByName("JGCZBBBID").Value.Trim();
SQL.ParamByName("pRQ").Value = DateTime.Now.ToShortDateString();
DataSet dsCLHQ = dberp.OpenDataSet(SQL);
for (int i = 0; i < dsCLHQ.Tables[0].Rows.Count; i++)
{
dicHeaderTextCLMC.Add((dsCLHQ.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim()), dsCLHQ.Tables[0].Rows[i]["CLMC"].ToString().Trim());
dicHeaderTextCLJG.Add((dsCLHQ.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim()), XLBJDUtils.strPadRight(dsCLHQ.Tables[0].Rows[i]["CLJG"].ToString().Trim(),iNumberDecimal) + "元/Kg");
//添加物料列
if (dsCLHQ.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim().Equals("2"))
{
dicHeaderTextCLWL.Add((dsCLHQ.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim()), dsCLHQ.Tables[0].Rows[i]["CLMC"].ToString().Trim());
}
}
Dictionary<string, string> dicColumns = new Dictionary<string, string>();
dicColumns.Clear();
dicColumns.Add("XLXSCLQD_XLXHID", "型号");
dicColumns.Add("XLXSCLQD_XLGGID", "规格");
dicColumns.Add("XLBZ", "标准");
dicColumns.Add("XLXSCLQD_DYDJID", "电压等级");
if (CurQueryEntity.FieldByName("XSWLCB").Value.Trim().ToUpper().Equals("TRUE"))
{
dicColumns.Add("WLID", "物料编码");
dicColumns.Add("WLXX", "物料信息");
}
dicColumns.Add("JLDW", "计量单位");
dicColumns.Add("XLXSCLQD_CLZL", "材料重量");
dicColumns.Add("CLCB", "材料成本");
string str = GetQuerySql().ToString();
SQL.Clear();
SQL.Add(str);
foreach (string s in entity.Param.Keys)
{
SQL.ParamByName(s).Value = entity.Param[s];
}
DataSet dsQry = dberp.OpenDataSet(SQL);
string sColName = "";
//列标记
int index = 0;
//数值列标记
int NumB = -1;
int NumE = -1;
string sColIndex = "";
string sCLQDL = "XLXSCLQD_SL";
string sCLJGL = "CLJG";
string sCLWLL = "XLXSCLWL";
string sWLJGL = "XLXSCLWLJG";
string sWLCBL = "XLXSCLWLCB";
//循环固定列,进行赋值
for (int i = 0; i < dsQry.Tables[0].Columns.Count; i++)
{
if (dicColumns.ContainsKey(dsQry.Tables[0].Columns[i].ColumnName))
{
sColName = dsQry.Tables[0].Columns[i].ColumnName;
dsQry.Tables[0].Columns[i].SetOrdinal(index);
dsQry.Tables[0].Columns[index].Caption = "待处理列&_" + dicColumns[sColName];
string ss = dsQry.Tables[0].Columns[i].ColumnName;
index++;
}
}
foreach (KeyValuePair<string, string> kvp in dicHeaderTextCLMC)
{
for (int i = 0; i < dsQry.Tables[0].Columns.Count; i++)
{
sColIndex = "";
sCLQDL = "XLXSCLQD_SL";
sCLJGL = "CLJG";
sCLWLL = "XLXSCLWL";
sWLJGL = "XLXSCLWLJG";
sWLCBL = "XLXSCLWLCB";
sColIndex = kvp.Key.Replace("第", "").Replace("列", "").Trim().PadLeft(2, '0');
sCLQDL = sCLQDL + sColIndex;
sCLJGL = sCLJGL + sColIndex;
sCLWLL = sCLWLL + sColIndex;
sWLJGL = sWLJGL + sColIndex;
sWLCBL = sWLCBL + sColIndex;
if (dsQry.Tables[0].Columns[i].ColumnName.Equals(sCLQDL))
{
if (NumB == -1)
{
//index从0开始,此时为7
NumB = index;
}
//第01列--XLXSCLQD_SL01
dsQry.Tables[0].Columns[i].SetOrdinal(index);
dsQry.Tables[0].Columns[index].Caption = "待处理列&_" + kvp.Value;
index++;
//第01列价格--CLJG01
dsQry.Tables[0].Columns[sCLJGL].SetOrdinal(index);
dsQry.Tables[0].Columns[index].Caption = "待处理列&_" + dicHeaderTextCLJG[kvp.Key];
index++;
if (dicHeaderTextCLWL.ContainsKey(kvp.Key))
{
//材料物料--XLXSCLWL01
dsQry.Tables[0].Columns[sCLWLL].SetOrdinal(index);
dsQry.Tables[0].Columns[index].Caption = "待处理列&_" + dsQry.Tables[0].Columns[index].ColumnName;
index++;
//物料价格(元/Kg)--XLXSCLWLJG01
dsQry.Tables[0].Columns[sWLJGL].SetOrdinal(index);
dsQry.Tables[0].Columns[index].Caption = "待处理列&_" + dsQry.Tables[0].Columns[index].ColumnName;
index++;
//物料成本--XLXSCLWLCB01
dsQry.Tables[0].Columns[sWLCBL].SetOrdinal(index);
dsQry.Tables[0].Columns[index].Caption = "待处理列&_" + dsQry.Tables[0].Columns[index].ColumnName;
index++;
}
break;
}
}
}
dicColumns.Clear();
dicColumns.Add("XLXSCLQD_BZ", "备注");
dicColumns.Add("XLXSCLQD_WHR", "维护人");
dicColumns.Add("XLXSCLQD_WHSJ", "维护时间");
//循环固定列,进行赋值
for (int i = 0; i < dsQry.Tables[0].Columns.Count; i++)
{
if (dicColumns.ContainsKey(dsQry.Tables[0].Columns[i].ColumnName))
{
if (NumE == -1)
{
NumE = index;
}
sColName = dsQry.Tables[0].Columns[i].ColumnName;
dsQry.Tables[0].Columns[i].SetOrdinal(index);
dsQry.Tables[0].Columns[index].Caption = "待处理列&_" + dicColumns[sColName];
string ss = dsQry.Tables[0].Columns[i].ColumnName;
index++;
}
}
//循环,删除列
for (int i = dsQry.Tables[0].Columns.Count - 1; i >= 0; i--)
{
if (dsQry.Tables[0].Columns[i].Caption.StartsWith("待处理列&_"))
{
dsQry.Tables[0].Columns[i].Caption = dsQry.Tables[0].Columns[i].Caption.Replace("待处理列&_", "");
}
else
{
dsQry.Tables[0].Columns.RemoveAt(i);
}
}
if (dsQry.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>();
//从0开始计数,所以到XLXSCLQD_SL01虽然是7,但是NumB应该减去2以保证前两位都能计入。
//因为入口是正确的,所以循环结束index会多加一位,所以NumE最后减去1
NumB = NumB - 2;
NumE = NumE - 1;
if (NumB >= 0 && NumE >= 0)
{
for (int k = NumB; k <= NumE; k++)
{
if (dsQry.Tables[0].Columns[k].ColumnName.StartsWith("XLXSCLWLJG"))//物料价格要设为数值型
{
sLet = TExcelData.ColIndexToReference(k);
sd.ColumnType.Add(sLet, NpoiColumnType.Double);
}
else if (dsQry.Tables[0].Columns[k].ColumnName.StartsWith("XLXSCLWLCB"))//物料成本要设为数值型
{
sLet = TExcelData.ColIndexToReference(k);
sd.ColumnType.Add(sLet, NpoiColumnType.Double);
}
else if (!dsQry.Tables[0].Columns[k].ColumnName.StartsWith("XLXSCLWL"))//除物料ID之外要设为数值型
{
sLet = TExcelData.ColIndexToReference(k);
sd.ColumnType.Add(sLet, NpoiColumnType.Double);
}
}
}
TExcelData.CreateExcel_XLSX_NPOI(m_tmpFilePath, dsQry, 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);
}
}
else
{
ShowMessage("无记录可以导出!");
}
}
#endregion
}
}