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

825 lines
40 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.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
}
}