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_MISPRO; using GThinking.N_MISPRO.Data; using GThinking.N_MODEL.Page; using GThinking.N_CONTROL; using GThinking.N_PUBLIC; using GThinking.N_MISPRO.Caching; using GThinking.N_MISPRO.Utility; using System.Collections.Generic; namespace GThinking.N_XLXSBJ { #region [EntityType(Db = "DBERP", Table = "XLXSCLQD", IsWf = false, IsWhr = true, IsAttach = false)] public class XLJGB_JJZSEntity : EntityObject { public string sJGBID = ""; public string sXLXHID = ""; public string sXLGGID = ""; public string sXLBZID = ""; public string sDYDJID = ""; public bool bHSBZ = true; public override TSQL SetQuerySql() { Dictionary dicCLHQ = new Dictionary(); Dictionary dicWLHQ = new Dictionary(); DataSet dsWLHQ = null; TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL tSql = new TSQL(dberp); tSql.Clear(); tSql.Add("select XLJGCZBLM_CLQDL,XLJGCZBLM_BJCLID,XLXSBJCL_BJHQ,XLJGCZBML_CZBLX"); tSql.Add(" from XLJGCZBLM"); tSql.Add(" left join XLXSCLQD on XLXSCLQD_JGCZBID=XLJGCZBLM_JGCZBID and XLXSCLQD_JGCZBBBID = XLJGCZBLM_JGCZBBBID "); tSql.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLJGCZBLM_BJCLID"); tSql.Add(" left join XLJGCZBML on XLJGCZBML_JGCZBID=XLJGCZBLM_JGCZBID"); tSql.Add(" where XLXSCLQD_XLXHID=:pXLXHID and XLXSCLQD_XLGGID=:pXLGGID and XLXSCLQD_XLBZID=:pXLBZID and XLXSCLQD_DYDJID=:pDYDJID "); tSql.Add(" and isnull(XLJGCZBLM_CLQDL,' ')<>' '"); tSql.Add(" order by XLJGCZBLM_CLQDL"); tSql.ParamByName("pXLXHID").Value = sXLXHID; tSql.ParamByName("pXLGGID").Value = sXLGGID; tSql.ParamByName("pXLBZID").Value = sXLBZID; tSql.ParamByName("pDYDJID").Value = sDYDJID; DataSet dsCZB = dberp.OpenDataSet(tSql); for (int i = 0; i < dsCZB.Tables[0].Rows.Count; i++) { //A类B类尺重表只支持材料行情报价 if (dsCZB.Tables[0].Rows[i]["XLJGCZBML_CZBLX"].ToString().Trim().Equals("B")) { dicCLHQ.Add(dsCZB.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(), dsCZB.Tables[0].Rows[i]["XLJGCZBLM_BJCLID"].ToString().Trim()); } else//Z类A类C类 { if (dsCZB.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim().Equals("1"))//1|材料行情 dicCLHQ.Add(dsCZB.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(), dsCZB.Tables[0].Rows[i]["XLJGCZBLM_BJCLID"].ToString().Trim()); else if (dsCZB.Tables[0].Rows[i]["XLXSBJCL_BJHQ"].ToString().Trim().Equals("2"))//2|物料行情 dicWLHQ.Add(dsCZB.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(), dsCZB.Tables[0].Rows[i]["XLJGCZBLM_BJCLID"].ToString().Trim()); } } //存在物料行情材料 if (dicWLHQ.Keys.Count > 0) { tSql.Clear(); tSql.Add("select XLXSCLQD_JGCZBID,XLXSCLQD_JGCZBBBID,XLXSCLQD_JGCZBXH,XLXSCLQD_DRHH"); tSql.Add(" from XLXSCLQD "); tSql.Add(" where XLXSCLQD_XLXHID=:pXLXHID and XLXSCLQD_XLGGID=:pXLGGID and XLXSCLQD_XLBZID=:pXLBZID and XLXSCLQD_DYDJID=:pDYDJID"); tSql.ParamByName("pXLXHID").Value = sXLXHID; tSql.ParamByName("pXLGGID").Value = sXLGGID; tSql.ParamByName("pXLBZID").Value = sXLBZID; tSql.ParamByName("pDYDJID").Value = sDYDJID; DataSet dsCZBXL = dberp.OpenDataSet(tSql); if (dsCZBXL.Tables[0].Rows.Count > 0) { string sJGCZBID = dsCZBXL.Tables[0].Rows[0]["XLXSCLQD_JGCZBID"].ToString().Trim(); string sJGCZBBBID = dsCZBXL.Tables[0].Rows[0]["XLXSCLQD_JGCZBBBID"].ToString().Trim(); string sJGCZBXH = dsCZBXL.Tables[0].Rows[0]["XLXSCLQD_JGCZBXH"].ToString().Trim(); string sDRHH = dsCZBXL.Tables[0].Rows[0]["XLXSCLQD_DRHH"].ToString().Trim(); //获取加工原料的价格表行情 Dictionary dicJGYLHSJG = new Dictionary(); Dictionary dicJGYLWSJG = new Dictionary(); tSql.Clear(); tSql.Add(" select XLXSCLHQ_BJCLID,XLXSCLHQ_HSJG,XLXSCLHQ_WSJG,isnull(JGYBJCLID,' ') as JGYBJCLID "); tSql.Add(" from XLXSCLHQ "); tSql.Add(" left join ( "); tSql.Add(" select distinct XLXSBJCL_JGYBJCLID as JGYBJCLID "); tSql.Add(" from XLXSBJCL where isnull(XLXSBJCL_JGYBJCLID,' ')<>' '"); tSql.Add(" ) a on JGYBJCLID=XLXSCLHQ_BJCLID"); tSql.Add(" where XLXSCLHQ_JGBID=:pJGBID "); tSql.Add(" and isnull(JGYBJCLID,' ') <> ' ' "); tSql.ParamByName("pJGBID").Value = sJGBID; DataSet dsJGYL = dberp.OpenDataSet(tSql); if (dsJGYL.Tables[0].Rows.Count > 0) { foreach (DataRow trow in dsJGYL.Tables[0].Rows) { if (!dicJGYLHSJG.ContainsKey(trow["XLXSCLHQ_BJCLID"].ToString().Trim())) { dicJGYLHSJG.Add(trow["XLXSCLHQ_BJCLID"].ToString().Trim(), CMISproConvert.StrToFloat(trow["XLXSCLHQ_HSJG"].ToString().Trim())); dicJGYLWSJG.Add(trow["XLXSCLHQ_BJCLID"].ToString().Trim(), CMISproConvert.StrToFloat(trow["XLXSCLHQ_WSJG"].ToString().Trim())); } } } #region 创建临时表 DateTime TimeStamp = MISproUtils.GetServerTime(); int VnewID = CMISproDataBase.GetMaxXH("DBERP", "V_XLXSCLQDWLHQ", "V_XLXSCLQDWLHQ_ID", "") + 1; tSql.Clear(); tSql.Add(@"insert into V_XLXSCLQDWLHQ(V_XLXSCLQDWLHQ_ID,V_XLXSCLQDWLHQ_TIMESTAMP,V_XLXSCLQDWLHQ_JGCZBID,V_XLXSCLQDWLHQ_JGCZBBBID,V_XLXSCLQDWLHQ_JGCZBXH,V_XLXSCLQDWLHQ_DRHH,V_XLXSCLQDWLHQ_HSBZ) select :pID,:pTime,XLXSCLQD_JGCZBID, XLXSCLQD_JGCZBBBID,XLXSCLQD_JGCZBXH,XLXSCLQD_DRHH,:pHSBZ from XLXSCLQD where XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID and XLXSCLQD_JGCZBXH=:pJGCZBXH and XLXSCLQD_DRHH=:pDRHH "); tSql.ParamByName("pID").Value = VnewID; tSql.ParamByName("pTime").Value = TimeStamp; tSql.ParamByName("pHSBZ").Value = "N"; tSql.ParamByName("pJGCZBID").Value = sJGCZBID; tSql.ParamByName("pJGCZBBBID").Value = sJGCZBBBID; tSql.ParamByName("pJGCZBXH").Value = CMISproConvert.StrToFloat(sJGCZBXH); tSql.ParamByName("pDRHH").Value = CMISproConvert.StrToFloat(sDRHH); dberp.ExecSQL(tSql); tSql.Clear(); tSql.Add(@"insert into V_XLXSCLQDWLHQ(V_XLXSCLQDWLHQ_ID,V_XLXSCLQDWLHQ_TIMESTAMP,V_XLXSCLQDWLHQ_JGCZBID,V_XLXSCLQDWLHQ_JGCZBBBID,V_XLXSCLQDWLHQ_JGCZBXH,V_XLXSCLQDWLHQ_DRHH,V_XLXSCLQDWLHQ_HSBZ) select :pID,:pTime,XLXSCLQD_JGCZBID, XLXSCLQD_JGCZBBBID,XLXSCLQD_JGCZBXH,XLXSCLQD_DRHH,:pHSBZ from XLXSCLQD where XLXSCLQD_JGCZBID=:pJGCZBID and XLXSCLQD_JGCZBBBID=:pJGCZBBBID and XLXSCLQD_JGCZBXH=:pJGCZBXH and XLXSCLQD_DRHH=:pDRHH "); tSql.ParamByName("pID").Value = VnewID; tSql.ParamByName("pTime").Value = TimeStamp; tSql.ParamByName("pHSBZ").Value = "Y"; tSql.ParamByName("pJGCZBID").Value = sJGCZBID; tSql.ParamByName("pJGCZBBBID").Value = sJGCZBBBID; tSql.ParamByName("pJGCZBXH").Value = CMISproConvert.StrToFloat(sJGCZBXH); tSql.ParamByName("pDRHH").Value = CMISproConvert.StrToFloat(sDRHH); dberp.ExecSQL(tSql); #endregion #region 循环dsCLQDL更新临时表 #region 含税 string sSQL_1 = " merge into V_XLXSCLQDWLHQ tar " + " using ( " + " select XLXSCLQDWL_JGCZBID,XLXSCLQDWL_JGCZBBBID,XLXSCLQDWL_JGCZBXH,XLXSCLQDWL_DRHH, "; string sSQL_2 = string.Empty; string sSQL_3 = " ' ' as MJBZ from XLXSCLQDWL "; string sSQL_4 = string.Empty; string sSQL_5 = " where XLXSCLQDWL_JGCZBID=:pJGCZBID and XLXSCLQDWL_JGCZBBBID=:pJGCZBBBID and XLXSCLQDWL_JGCZBXH=:pJGCZBXH and XLXSCLQDWL_DRHH=:pDRHH " + " ) sor " + " on ( " + " XLXSCLQDWL_JGCZBID=V_XLXSCLQDWLHQ_JGCZBID and XLXSCLQDWL_JGCZBBBID=V_XLXSCLQDWLHQ_JGCZBBBID and XLXSCLQDWL_JGCZBXH=V_XLXSCLQDWLHQ_JGCZBXH and XLXSCLQDWL_DRHH=V_XLXSCLQDWLHQ_DRHH and V_XLXSCLQDWLHQ_HSBZ=:pHSBZ and V_XLXSCLQDWLHQ_ID=:pID " + " ) when matched then update set V_XLXSCLQDWLHQ_HSBZ=:pHSBZ"; string sSQL_6 = string.Empty; int count = 0;//记录已经拼接的列数 foreach (string sCLQDL in dicWLHQ.Keys) { sSQL_2 += string.Format("XLXSCLQDWL_WLID{0},isnull(c{0}.XLXSWLHQ_WSJG,0) as WSJG{0},isnull(c{0}.XLXSWLHQ_HSJG,0) as HSJG{0},", sCLQDL.Replace("第", "").Replace("列", "")); sSQL_4 += "left join "; sSQL_4 += " ("; sSQL_4 += " select XLXSWLHQ_WLID,"; //无税价格 if (dicJGYLWSJG.Count > 0) { sSQL_4 += " case "; foreach (string BJCLID in dicJGYLWSJG.Keys) { sSQL_4 += string.Format(" when isnull(XLXSBJCL_JGYBJCLID,' ')<>' ' and XLXSBJCL_JGYBJCLID='{0}' then {1}+XLXSWLHQ_WSJGF", BJCLID, dicJGYLWSJG[BJCLID]); } sSQL_4 += " else XLXSWLHQ_WSJG end as XLXSWLHQ_WSJG, "; } else { sSQL_4 += " XLXSWLHQ_WSJG, "; } //含税价格 if (dicJGYLHSJG.Count > 0) { sSQL_4 += " case "; foreach (string BJCLID in dicJGYLHSJG.Keys) { sSQL_4 += string.Format(" when isnull(XLXSBJCL_JGYBJCLID,' ')<>' ' and XLXSBJCL_JGYBJCLID='{0}' then {1}+XLXSWLHQ_HSJGF", BJCLID, dicJGYLHSJG[BJCLID]); } sSQL_4 += " else XLXSWLHQ_HSJG end as XLXSWLHQ_HSJG "; } else { sSQL_4 += " XLXSWLHQ_HSJG "; } sSQL_4 += " from XLXSWLHQ"; sSQL_4 += " left join XLXSBJCLWL on XLXSBJCLWL_WLID=XLXSWLHQ_WLID"; sSQL_4 += " left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSBJCLWL_BJCLID"; sSQL_4 += " where XLXSWLHQ_JGBID=' '"; sSQL_4 += " and XLXSWLHQ_YXQS<=:pRQ and (XLXSWLHQ_YXQZ>=:pRQ or XLXSWLHQ_YXQZ is null)"; sSQL_4 += string.Format(") c{0} on c{0}.XLXSWLHQ_WLID=XLXSCLQDWL_WLID{0} ", sCLQDL.Replace("第", "").Replace("列", "")); sSQL_6 += string.Format(" ,V_XLXSCLQDWLHQ_JG{0} = HSJG{0} ", sCLQDL.Replace("第", "").Replace("列", "")); count++; if (count % 25 == 0 || count == dicWLHQ.Count) { tSql.Clear(); tSql.Add(sSQL_1); tSql.Add(sSQL_2); tSql.Add(sSQL_3); tSql.Add(sSQL_4); tSql.Add(sSQL_5); tSql.Add(sSQL_6); tSql.ParamByName("pID").Value = VnewID; tSql.ParamByName("pHSBZ").Value = "Y"; tSql.ParamByName("pRQ").Value = DateTime.Now.ToShortDateString(); tSql.ParamByName("pJGCZBID").Value = sJGCZBID; tSql.ParamByName("pJGCZBBBID").Value = sJGCZBBBID; tSql.ParamByName("pJGCZBXH").Value = CMISproConvert.StrToFloat(sJGCZBXH); tSql.ParamByName("pDRHH").Value = CMISproConvert.StrToFloat(sDRHH); dberp.ExecSQL(tSql); sSQL_2 = string.Empty; sSQL_4 = string.Empty; sSQL_6 = string.Empty; } } #endregion #region 无税 sSQL_1 = " merge into V_XLXSCLQDWLHQ tar " + " using ( " + " select XLXSCLQDWL_JGCZBID,XLXSCLQDWL_JGCZBBBID,XLXSCLQDWL_JGCZBXH,XLXSCLQDWL_DRHH, "; sSQL_2 = string.Empty; sSQL_3 = " from XLXSCLQDWL "; sSQL_4 = string.Empty; sSQL_5 = " where XLXSCLQDWL_JGCZBID=:pJGCZBID and XLXSCLQDWL_JGCZBBBID=:pJGCZBBBID and XLXSCLQDWL_JGCZBXH=:pJGCZBXH and XLXSCLQDWL_DRHH=:pDRHH " + " ) sor " + " on ( " + " XLXSCLQDWL_JGCZBID=V_XLXSCLQDWLHQ_JGCZBID and XLXSCLQDWL_JGCZBBBID=V_XLXSCLQDWLHQ_JGCZBBBID and XLXSCLQDWL_JGCZBXH=V_XLXSCLQDWLHQ_JGCZBXH and XLXSCLQDWL_DRHH=V_XLXSCLQDWLHQ_DRHH and V_XLXSCLQDWLHQ_HSBZ=:pHSBZ and V_XLXSCLQDWLHQ_ID=:pID " + " ) when matched then update set V_XLXSCLQDWLHQ_HSBZ=:pHSBZ"; sSQL_6 = string.Empty; count = 0;//记录已经拼接的列数 foreach (string sCLQDL in dicWLHQ.Keys) { sSQL_2 += string.Format("XLXSCLQDWL_WLID{0},isnull(c{0}.XLXSWLHQ_WSJG,0) as WSJG{0},isnull(c{0}.XLXSWLHQ_HSJG,0) as HSJG{0}", sCLQDL.Replace("第", "").Replace("列", "")); sSQL_4 += "left join "; sSQL_4 += " ("; sSQL_4 += " select XLXSWLHQ_WLID,"; //无税价格 if (dicJGYLWSJG.Count > 0) { sSQL_4 += " case "; foreach (string BJCLID in dicJGYLWSJG.Keys) { sSQL_4 += string.Format(" when isnull(XLXSBJCL_JGYBJCLID,' ')<>' ' and XLXSBJCL_JGYBJCLID='{0}' then {1}+XLXSWLHQ_WSJGF", BJCLID, dicJGYLWSJG[BJCLID]); } sSQL_4 += " else XLXSWLHQ_WSJG end as XLXSWLHQ_WSJG, "; } else { sSQL_4 += " XLXSWLHQ_WSJG, "; } //含税价格 if (dicJGYLHSJG.Count > 0) { sSQL_4 += " case "; foreach (string BJCLID in dicJGYLHSJG.Keys) { sSQL_4 += string.Format(" when isnull(XLXSBJCL_JGYBJCLID,' ')<>' ' and XLXSBJCL_JGYBJCLID='{0}' then {1}+XLXSWLHQ_HSJGF", BJCLID, dicJGYLHSJG[BJCLID]); } sSQL_4 += " else XLXSWLHQ_HSJG end as XLXSWLHQ_HSJG "; } else { sSQL_4 += " XLXSWLHQ_HSJG "; } sSQL_4 += " from XLXSWLHQ"; sSQL_4 += " left join XLXSBJCLWL on XLXSBJCLWL_WLID=XLXSWLHQ_WLID"; sSQL_4 += " left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSBJCLWL_BJCLID"; sSQL_4 += " where XLXSWLHQ_JGBID=' '"; sSQL_4 += " and XLXSWLHQ_YXQS<=:pRQ and (XLXSWLHQ_YXQZ>=:pRQ or XLXSWLHQ_YXQZ is null)"; sSQL_4 += string.Format(") c{0} on c{0}.XLXSWLHQ_WLID=XLXSCLQDWL_WLID{0} ", sCLQDL.Replace("第", "").Replace("列", "")); sSQL_6 += string.Format(" ,V_XLXSCLQDWLHQ_JG{0} = WSJG{0} ", sCLQDL.Replace("第", "").Replace("列", "")); count++; if (count % 25 == 0 || count == dicWLHQ.Count) { tSql.Clear(); tSql.Add(sSQL_1); tSql.Add(sSQL_2); tSql.Add(sSQL_3); tSql.Add(sSQL_4); tSql.Add(sSQL_5); tSql.Add(sSQL_6); tSql.ParamByName("pID").Value = VnewID; tSql.ParamByName("pHSBZ").Value = "N"; tSql.ParamByName("pRQ").Value = DateTime.Now.ToShortDateString(); tSql.ParamByName("pJGCZBID").Value = sJGCZBID; tSql.ParamByName("pJGCZBBBID").Value = sJGCZBBBID; tSql.ParamByName("pJGCZBXH").Value = CMISproConvert.StrToFloat(sJGCZBXH); tSql.ParamByName("pDRHH").Value = CMISproConvert.StrToFloat(sDRHH); dberp.ExecSQL(tSql); sSQL_2 = string.Empty; sSQL_4 = string.Empty; sSQL_6 = string.Empty; } } #endregion #endregion #region 查询物料行情 tSql.Clear(); tSql.Add("select "); bool bFirst = true; foreach (string sCLQDL in dicWLHQ.Keys) { if (!bFirst) tSql.Add(","); bFirst = false; tSql.Add(string.Format("XLXSCLQDWL_WLID{0},isnull(a.V_XLXSCLQDWLHQ_JG{0},0) as WSJG{0},isnull(b.V_XLXSCLQDWLHQ_JG{0},0) as HSJG{0}", sCLQDL.Replace("第", "").Replace("列", ""))); } tSql.Add(" from XLXSCLQDWL"); tSql.Add(" left join"); tSql.Add(" V_XLXSCLQDWLHQ a on "); tSql.Add(" XLXSCLQDWL_JGCZBID=a.V_XLXSCLQDWLHQ_JGCZBID and XLXSCLQDWL_JGCZBBBID=a.V_XLXSCLQDWLHQ_JGCZBBBID and XLXSCLQDWL_JGCZBXH=a.V_XLXSCLQDWLHQ_JGCZBXH and XLXSCLQDWL_DRHH=a.V_XLXSCLQDWLHQ_DRHH and a.V_XLXSCLQDWLHQ_HSBZ='N' and a.V_XLXSCLQDWLHQ_ID =:pID "); tSql.Add(" left join"); tSql.Add(" V_XLXSCLQDWLHQ b on "); tSql.Add(" XLXSCLQDWL_JGCZBID=b.V_XLXSCLQDWLHQ_JGCZBID and XLXSCLQDWL_JGCZBBBID=b.V_XLXSCLQDWLHQ_JGCZBBBID and XLXSCLQDWL_JGCZBXH=b.V_XLXSCLQDWLHQ_JGCZBXH and XLXSCLQDWL_DRHH=b.V_XLXSCLQDWLHQ_DRHH and b.V_XLXSCLQDWLHQ_HSBZ='Y' and b.V_XLXSCLQDWLHQ_ID =:pID "); tSql.Add(" where XLXSCLQDWL_JGCZBID=:pJGCZBID and XLXSCLQDWL_JGCZBBBID=:pJGCZBBBID and XLXSCLQDWL_JGCZBXH=:pJGCZBXH and XLXSCLQDWL_DRHH=:pDRHH"); tSql.ParamByName("pID").Value = VnewID; tSql.ParamByName("pRQ").Value = DateTime.Now.ToShortDateString(); tSql.ParamByName("pJGCZBID").Value = sJGCZBID; tSql.ParamByName("pJGCZBBBID").Value = sJGCZBBBID; tSql.ParamByName("pJGCZBXH").Value = sJGCZBXH; tSql.ParamByName("pDRHH").Value = sDRHH; dsWLHQ = dberp.OpenDataSet(tSql); #endregion //删除临时表 tSql.Clear(); tSql.Add("delete from V_XLXSCLQDWLHQ where V_XLXSCLQDWLHQ_ID=:pID "); tSql.ParamByName("pID").Value = VnewID; dberp.ExecSQL(tSql); } } TSQL SQL = base.SetQuerySql(); SQL.Clear(); SQL.Add("select XLJGCZBLM_BJCLID,XLXSBJCL_BJCLMC,"); Dictionary DicJGYWLID = new Dictionary(); #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 //报价材料价格 SQL.Add(" case "); foreach (string sCLQDL in dicCLHQ.Keys) { if (bHSBZ) SQL.Add(string.Format(" when XLJGCZBLM_CLQDL='{0}' then isnull(XLXSCLHQ_HSJG,0.0) ", sCLQDL)); else SQL.Add(string.Format(" when XLJGCZBLM_CLQDL='{0}' then isnull(XLXSCLHQ_WSJG,0.0) ", sCLQDL)); } foreach (string sCLQDL in dicWLHQ.Keys) { SQL.Add(string.Format(" when XLJGCZBLM_CLQDL='{0}' then 0.0 ", sCLQDL)); } SQL.Add(" end as CLJG, "); //物料信息 SQL.Add(" case "); foreach (string sCLQDL in dicCLHQ.Keys) { SQL.Add(string.Format(" when XLJGCZBLM_CLQDL='{0}' then ' ' ", sCLQDL)); } foreach (string sCLQDL in dicWLHQ.Keys) { if (dsWLHQ != null && dsWLHQ.Tables[0].Rows.Count > 0) { string sWLID = dsWLHQ.Tables[0].Rows[0]["XLXSCLQDWL_WLID" + sCLQDL.Replace("第", "").Replace("列", "")].ToString().Trim(); if (DicJGYWLID.ContainsKey(sWLID)) sWLID = DicJGYWLID[sWLID]; SQL.Add(string.Format(" when XLJGCZBLM_CLQDL='{0}' then '{1}' ", sCLQDL, GetWLXX(sWLID))); } else SQL.Add(string.Format(" when XLJGCZBLM_CLQDL='{0}' then ' ' ", sCLQDL)); } SQL.Add(" end as WLXX, "); //物料价格 SQL.Add(" case "); foreach (string sCLQDL in dicCLHQ.Keys) { SQL.Add(string.Format(" when XLJGCZBLM_CLQDL='{0}' then 0.0 ", sCLQDL)); } foreach (string sCLQDL in dicWLHQ.Keys) { if (dsWLHQ != null && dsWLHQ.Tables[0].Rows.Count > 0) { if (bHSBZ) SQL.Add(string.Format(" when XLJGCZBLM_CLQDL='{0}' then {1} ", sCLQDL, dsWLHQ.Tables[0].Rows[0]["HSJG" + sCLQDL.Replace("第", "").Replace("列", "")].ToString().Trim())); else SQL.Add(string.Format(" when XLJGCZBLM_CLQDL='{0}' then {1} ", sCLQDL, dsWLHQ.Tables[0].Rows[0]["WSJG" + sCLQDL.Replace("第", "").Replace("列", "")].ToString().Trim())); } else { SQL.Add(string.Format(" when XLJGCZBLM_CLQDL='{0}' then 0.0 ", sCLQDL)); } } SQL.Add(" end as WLJG, "); //材料数量 SQL.Add(" case "); foreach (string sCLQDL in dicCLHQ.Keys) { SQL.Add(string.Format(" when XLJGCZBLM_CLQDL='{0}' then XLXSCLQD_SL{1} ", sCLQDL, sCLQDL.Replace("第", "").Replace("列", ""))); } foreach (string sCLQDL in dicWLHQ.Keys) { SQL.Add(string.Format(" when XLJGCZBLM_CLQDL='{0}' then XLXSCLQD_SL{1} ", sCLQDL, sCLQDL.Replace("第", "").Replace("列", ""))); } SQL.Add(" end as CLSL, "); //损耗率 SQL.Add(" case "); foreach (string sCLQDL in dicCLHQ.Keys) { SQL.Add(string.Format(" when XLJGCZBLM_CLQDL='{0}' then XLXSCLQD_SHL{1} ", sCLQDL, sCLQDL.Replace("第", "").Replace("列", ""))); } foreach (string sCLQDL in dicWLHQ.Keys) { SQL.Add(string.Format(" when XLJGCZBLM_CLQDL='{0}' then XLXSCLQD_SHL{1} ", sCLQDL, sCLQDL.Replace("第", "").Replace("列", ""))); } SQL.Add(" end as SHL, "); //材料用量比例 SQL.Add(" case "); foreach (string sCLQDL in dicCLHQ.Keys) { SQL.Add(string.Format(" when XLJGCZBLM_CLQDL='{0}' then XLXSCLQD_CLJGBL{1} ", sCLQDL, sCLQDL.Replace("第", "").Replace("列", ""))); } foreach (string sCLQDL in dicWLHQ.Keys) { SQL.Add(string.Format(" when XLJGCZBLM_CLQDL='{0}' then XLXSCLQD_CLJGBL{1} ", sCLQDL, sCLQDL.Replace("第", "").Replace("列", ""))); } SQL.Add(" end as CLJGBL, "); //材料成本 SQL.Add(" case "); foreach (string sCLQDL in dicCLHQ.Keys) { if (bHSBZ) SQL.Add(string.Format(" when XLJGCZBLM_CLQDL='{0}' then isnull(XLXSCLHQ_HSJG,0.0)*XLXSCLQD_SL{1}*(1+XLXSCLQD_SHL{1}/100)*XLXSCLQD_CLJGBL{1} ", sCLQDL, sCLQDL.Replace("第", "").Replace("列", ""))); else SQL.Add(string.Format(" when XLJGCZBLM_CLQDL='{0}' then isnull(XLXSCLHQ_WSJG,0.0)*XLXSCLQD_SL{1}*(1+XLXSCLQD_SHL{1}/100)*XLXSCLQD_CLJGBL{1} ", sCLQDL, sCLQDL.Replace("第", "").Replace("列", ""))); } foreach (string sCLQDL in dicWLHQ.Keys) { if (dsWLHQ != null && dsWLHQ.Tables[0].Rows.Count > 0) { if (bHSBZ) SQL.Add(string.Format(" when XLJGCZBLM_CLQDL='{0}' then {2}*XLXSCLQD_SL{1}*(1+XLXSCLQD_SHL{1}/100)*XLXSCLQD_CLJGBL{1} ", sCLQDL, sCLQDL.Replace("第", "").Replace("列", ""), dsWLHQ.Tables[0].Rows[0]["HSJG" + sCLQDL.Replace("第", "").Replace("列", "")].ToString().Trim())); else SQL.Add(string.Format(" when XLJGCZBLM_CLQDL='{0}' then {2}*XLXSCLQD_SL{1}*(1+XLXSCLQD_SHL{1}/100)*XLXSCLQD_CLJGBL{1} ", sCLQDL, sCLQDL.Replace("第", "").Replace("列", ""), dsWLHQ.Tables[0].Rows[0]["WSJG" + sCLQDL.Replace("第", "").Replace("列", "")].ToString().Trim())); } else { SQL.Add(string.Format(" when XLJGCZBLM_CLQDL='{0}' then 0.0 ", sCLQDL)); } } SQL.Add(" end as CLCB "); SQL.Add(" from XLXSCLQD, "); SQL.Add(" XLJGCZBLM"); SQL.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLJGCZBLM_BJCLID"); if (!sJGBID.Trim().Equals(""))//价格表专有材料行情 { SQL.Add(" left join"); SQL.Add(" ("); SQL.Add(" select XLXSCLHQ_BJCLID,XLXSCLHQ_HSJG,XLXSCLHQ_WSJG"); //if (bHSBZ) // SQL.Add(" XLXSCLHQ_HSJG,"); //else // SQL.Add(" XLXSCLHQ_WSJG"); SQL.Add(" from XLXSCLHQ"); SQL.Add(" where XLXSCLHQ_JGBID=:pJGBID"); SQL.Add(" ) b on XLXSCLHQ_BJCLID=XLXSBJCL_BJCLID"); SQL.ParamByName("pJGBID").Value = sJGBID; } else { SQL.Add(" left join"); SQL.Add(" ("); SQL.Add(" select XLXSCLHQ_BJCLID,XLXSCLHQ_HSJG,XLXSCLHQ_WSJG"); SQL.Add(" from XLXSCLHQ,"); 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 and (XLXSCLHQ_YXQZ is null or XLXSCLHQ_YXQZ>=:pRQ) "); SQL.Add(" group by XLXSCLHQ_BJCLID"); SQL.Add(" ) a"); SQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ' and XLXSCLHQ_BJCLID=BJCLID and XLXSCLHQ_YXQS=maxYXQS"); SQL.Add(" ) aa on XLXSCLHQ_BJCLID=XLXSBJCL_BJCLID"); SQL.ParamByName("pRQ").Value = DateTime.Now.ToShortDateString(); } SQL.Add("where XLJGCZBLM_JGCZBID=XLXSCLQD_JGCZBID and XLJGCZBLM_JGCZBBBID = XLXSCLQD_JGCZBBBID and isnull(XLJGCZBLM_CLQDL,' ')<>' ' "); SQL.Add(" and XLXSCLQD_XLXHID=:pXLXHID and XLXSCLQD_XLGGID=:pXLGGID and XLXSCLQD_XLBZID=:pXLBZID and XLXSCLQD_DYDJID=:pDYDJID "); SQL.Add(" order by XLJGCZBLM_BJCLID"); SQL.ParamByName("pXLXHID").Value = sXLXHID; SQL.ParamByName("pXLGGID").Value = sXLGGID; SQL.ParamByName("pXLBZID").Value = sXLBZID; SQL.ParamByName("pDYDJID").Value = sDYDJID; return SQL; } public override bool Querying(TSQL sql) { Entites.Columns.Clear(); Entites.Clear(); return base.Querying(sql); } private string GetWLXX(string sWLID) { TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL sql = new TSQL(dberp); sql.Add("select WL_MC,WL_GG from WL where WL_WLID=:pWLID"); sql.ParamByName("pWLID").Value = sWLID.Trim(); DataSet ds = dberp.OpenDataSet(sql); if (ds.Tables[0].Rows.Count > 0) return sWLID.Trim() + "|" + ds.Tables[0].Rows[0]["WL_MC"].ToString().Trim() + "|" + ds.Tables[0].Rows[0]["WL_GG"].ToString().Trim(); else return sWLID.Trim(); } } #endregion public partial class XLJGB_JJZS : OperationBase { XLJGB_JJZSEntity entity = new XLJGB_JJZSEntity(); protected void Page_Load(object sender, EventArgs e) { this.UMID = 100860001; this.UMName = "线缆销售报价价格表"; this.CurMaster = Master; this.Tabs = Tab; this.PageHeight = 500; this.PageWidth = 700; CurMaster.BtnQueryVisible = false; CurMaster.BtnReportVisible = false; AddListSetMap(new ListSet(pagSHD.ID, null, grdSHD, entity, UPSHD)); base.InitPage(); grdSHD.EnabledToolBar = false; CurMaster.PnlBill.Visible = false; CurMaster.PnlQuery.Visible = false; CurMaster.BtnOK.Visible = false; CurMaster.BtnCancel.Visible = false; if (GetOption("BJU002") != null) { grdSHD.FindColumnByFieldName("CLCB").NumberDecimalPlace = CMISproConvert.StrToInt(GetOption("BJU002"), 2); txtCLCB.DecimalPlaces = CMISproConvert.StrToInt(GetOption("BJU002"), 2); } if (GetOption("BJU003") != null) { grdSHD.FindColumnByFieldName("CLSL").HeaderText = "材料数量(Kg/" + GetOption("BJU003") + ")"; grdSHD.FindColumnByFieldName("CLCB").HeaderText = "材料成本(元/" + GetOption("BJU003") + ")"; lblDW.Text = "元/" + GetOption("BJU003"); } if (!IsPostBack) { //TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); //TSQL SQL = new TSQL(dberp); //SQL.Clear(); //SQL.Add("select XLXSTZYZ_YZID, XLXSTZYZ_YZMC, XLXSTZYZ_JJFS "); //SQL.Add(" from XLXSTZYZ"); //SQL.Add(" where XLXSTZYZ_MXBH = 'JZJ' and XLXSTZYZ_TJYS='2' "); //SQL.Add("order by XLXSTZYZ_XSXH,XLXSTZYZ_YZID"); //DataSet ds = dberp.OpenDataSet(SQL); //if (ds.Tables[0].Rows.Count > 0) //{ // if (ds.Tables[0].Rows[0]["XLXSTZYZ_JJFS"].ToString().Trim().Equals("JJ")) // grdSHD.FindColumnByFieldName("YZZ").HeaderText = ds.Tables[0].Rows[0]["XLXSTZYZ_YZMC"].ToString().Trim() + "(元)"; // else // grdSHD.FindColumnByFieldName("YZZ").HeaderText = ds.Tables[0].Rows[0]["XLXSTZYZ_YZMC"].ToString().Trim() + "(%)"; //} Master_OnQuery(); GridDataBind(); double dCLCB = 0; foreach (GridViewRow row in grdSHD.Rows) { dCLCB += CMISproConvert.StrToFloat(grdSHD.GetValueByFieldName("CLCB", row)); } txtCLCB.Value = dCLCB; } grdSHD.FindColumnByFieldName("CLJG").NumberDecimalPlace = XLBJDUtils.BJCLPriceDecimal; grdSHD.FindColumnByFieldName("WLJG").NumberDecimalPlace = XLBJDUtils.BJCLPriceDecimal; } #region 模板继承事件 protected override void Master_OnQuery() { entity.sJGBID = PageParam.GetRTrimString("JGBID"); entity.bHSBZ = PageParam.GetRTrimString("HSBZ").Equals("Y"); entity.sXLXHID = PageParam.GetRTrimString("XLXHID"); entity.sXLGGID = PageParam.GetRTrimString("XLGGID"); entity.sXLBZID = PageParam.GetRTrimString("XLBZID"); entity.sDYDJID = PageParam.GetRTrimString("DYDJID"); base.Master_OnQuery(); grdSHD.SelectedIndex = -1; } protected override void GridDataBind() { base.GridDataBind(); } protected override bool DataLogicValid() { return base.DataLogicValid(); } protected override bool Master_OnOK() { bool bResult = base.Master_OnOK(); if (!bResult) return false; CloseWindow(); return false; } protected override void Grid_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow && Tab.ActiveTabIndex == 1) { } base.Grid_RowDataBound(sender, e); } #endregion } }