using System; using System.Data; using System.Configuration; 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_MISPROAS.Web.AjaxServices; using GThinking.N_MISPRO.Data; using System.Collections.Generic; using System.Web.Script.Serialization; using GThinking.N_MISPRO; using GThinking.N_MISPRO.Utility; using GThinking.N_WORKFLOW; using System.Web.Caching; using GThinking.N_PUBLIC; namespace GThinking.N_XLXSBJ { public class XSHTSCBJDService { /// /// 生成报价单,来源模块:100452001|销售合同维护 /// /// 交接单ID /// 铜价 /// 铝价 /// 价格类型 /// 用户 /// [AjaxMethod(AuthRequried = false)] public static XSHTSCBJDData CreateXLXSBJD(string sJJDID,string sRQ,double fTJ, double fLJ, string sUserID) { Mac.MacLog.TraceFormat(String.Format("销售合同生成报价单服务-------------------")); Mac.MacLog.TraceFormat(String.Format("操作人:{0}---------------", sUserID + "|" + TRYXX.GetRYXXByGH(sUserID).XM)); Mac.MacLog.TraceFormat(String.Format("开始时间:{0}---------------", DateTime.Now.ToString().Trim())); Mac.MacLog.TraceFormat(String.Format("交接单编码:{0}---------------", sJJDID)); Mac.MacLog.TraceFormat(String.Format("日期:{0}---------------", sRQ)); Mac.MacLog.TraceFormat(String.Format("铜价:{0}---------------", fTJ.ToString().Trim())); Mac.MacLog.TraceFormat(String.Format("铝价:{0}---------------", fLJ.ToString().Trim())); DateTime dtBeg = DateTime.Now; XSHTSCBJDData objOUT = new XSHTSCBJDData(); objOUT.Success = true; objOUT.ErrorMessage = ""; TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL SQL = new TSQL(dberp); string sBJDID = ""; try { if (sJJDID.Equals("")) { throw new Exception("交接单编码为空,不允许生成报价单记录!"); } if (sRQ.Equals("")) { throw new Exception("日期为空,不允许生成报价单记录!"); } SQL.Clear(); SQL.Add("select XLXSBJD_BJDID from XLXSBJD where XLXSBJD_YWLX='HT' and XLXSBJD_YWDH=:sJJDID "); SQL.ParamByName("sJJDID").Value = sJJDID; DataSet dsBJD = dberp.OpenDataSet(SQL); if (dsBJD.Tables[0].Rows.Count > 0) { objOUT.Success = false; objOUT.ErrorMessage = "当前合同已生成比价记录,不允许重复生成!"; } else { GetXSHTToBJD(dberp, SQL, objOUT, sBJDID, sJJDID, sRQ, fTJ, fLJ, sUserID); } } catch (Exception ex) { objOUT.Success = false; objOUT.ErrorMessage = ex.Message.ToString().Trim(); } DateTime dtEnd = DateTime.Now; TimeSpan spOm = dtEnd - dtBeg; double dTotal = spOm.TotalSeconds; Mac.MacLog.TraceFormat(String.Format("总计耗时:{0}---------------", dTotal.ToString().Trim())); Mac.MacLog.TraceFormat(String.Format("时间1:{0}---------------", dtBeg.ToString().Trim())); Mac.MacLog.TraceFormat(String.Format("时间2:{0}---------------", dtEnd.ToString().Trim())); return objOUT; } private static void GetXSHTToBJD(TDatabase dberp, TSQL SQL, XSHTSCBJDData objOUT, string sBJDID, string sJJDID,string sRQ, double fTJ, double fLJ, string sUserGH) { DateTime dt1 = DateTime.Now; DateTime dt2 = DateTime.Now; DateTime dt3 = DateTime.Now; DateTime dt4 = DateTime.Now; DateTime dt5 = DateTime.Now; DateTime dt6 = DateTime.Now; DateTime dt7 = DateTime.Now; DateTime dt8 = DateTime.Now; dt1 = DateTime.Now; SQL.Clear(); SQL.Add("select "); SQL.Add(" HT_KHIDE,KH_MC,HT_XMMC,HT_SYDWID,HT_XZQHID,HT_XSZRR,HT_LXR,HT_LXDH,'HT' as YWLX,HT_JJDID, "); SQL.Add(" HTMX_XH,HTMX_WLID,HTMX_XQSL,HTMX_JLDW,"); SQL.Add(" case when isnull(XSBJXHTH_BJXLXHID,' ') = ' ' then XLXLB_XLXHID else XSBJXHTH_BJXLXHID end as XLXLB_XLXHID,XLXLB_XLGGID,XLXLB_XLBZID,XLXLB_DYDJID,XLXLB_XLYSID"); SQL.Add("from HTMX"); SQL.Add("left join HT on HT_JJDID=HTMX_JJDID"); SQL.Add("left join KH on KH_KHID=HT_KHIDE"); SQL.Add("left join XSY on XSY_TXY=HT_XSZRR"); SQL.Add("left join XLXLB on XLXLB_WLID=HTMX_WLID"); SQL.Add("left join XSBJXHTH on XSBJXHTH_XLXHID=XLXLB_XLXHID"); SQL.Add("where HT_JJDID=:pJJDID"); SQL.ParamByName("pJJDID").Value = sJJDID; DataSet dsHT = dberp.OpenDataSet(SQL); Mac.MacLog.TraceFormat(String.Format("dt1:{0}---------------", dt1.ToString().Trim())); if (dsHT.Tables[0].Rows.Count > 0) { try { dberp.BeginTrans(); dt2 = DateTime.Now; Mac.MacLog.TraceFormat(String.Format("dt2:{0}---------------", dt2.ToString().Trim())); #region 主表变量初始化 string sYWLX = "HT"; string sYWDH = sJJDID; double fYWXH = 0; CMISproSession tSession = null; string sBJRQ = CMISproConvert.ConvertDate(sRQ); string sBJFLID = GetBJFLID(dberp, SQL); string sXSQYID = ""; string sXZQHID=dsHT.Tables[0].Rows[0]["HT_XZQHID"].ToString().Trim(); string sJGBID = ""; string sKH=dsHT.Tables[0].Rows[0]["KH_MC"].ToString().Trim(); string sTXY = dsHT.Tables[0].Rows[0]["HT_XSZRR"].ToString().Trim(); string sXSJLMC = ""; string sXSBMID = ""; GetXSYXX(dberp, SQL, sTXY, ref sXSJLMC, ref sXSBMID); string sSYDWID = dsHT.Tables[0].Rows[0]["HT_SYDWID"].ToString().Trim(); #region 报价分类校验 if (sBJFLID.Equals("")) { throw new Exception("报价分类为空!请至【100860062|销售报价业务配置】模块进行设置!"); } #endregion #region 价格表校验 and 获取价格表编码 Dictionary dicJGBID = new Dictionary(); dicJGBID = XLBJDUtils.GetJGBIDByXSQYID("", sBJFLID, sBJRQ, sXSQYID); foreach (KeyValuePair kvp in dicJGBID) { if (sJGBID.Equals("")) { sJGBID = kvp.Key; } } if (sJGBID.Equals("")) { throw new Exception("价格表为空!请至【100860001|线缆销售报价价格表】模块检查是否存在可用价格表!"); } #endregion #region 根据规则生成报价单编码 string sError = string.Empty; XLBJDUtils.GetBJDID(sXZQHID, sBJFLID, sSYDWID,ref sBJDID, ref sError); if (!string.IsNullOrEmpty(sError)) { throw new Exception(sError); } #endregion dt3 = DateTime.Now; Mac.MacLog.TraceFormat(String.Format("dt3:{0}---------------", dt3.ToString().Trim())); tSession = getSession(); #region 插入主表信息 SQL.Clear(); SQL.Add("insert into XLXSBJD "); SQL.Add(" ( "); SQL.Add(" XLXSBJD_BJDID,XLXSBJD_CLHQJGBID,"); SQL.Add(" XLXSBJD_BJFLID,XLXSBJD_XSQYID,XLXSBJD_XZQHID,"); SQL.Add(" XLXSBJD_SYDWID,XLXSBJD_XSJLMC,XLXSBJD_TXY,XLXSBJD_XSBMID, "); SQL.Add(" XLXSBJD_KHLXR,XLXSBJD_LXDH,XLXSBJD_JZBJHS,"); SQL.Add(" XLXSBJD_TJ,XLXSBJD_LJ,"); SQL.Add(" XLXSBJD_SQR,XLXSBJD_SQRGH,XLXSBJD_SQRID,XLXSBJD_SQRQ,"); SQL.Add(" XLXSBJD_BJRQ, XLXSBJD_JGBID, "); SQL.Add(" XLXSBJD_YWLX,XLXSBJD_YWDH,XLXSBJD_WPID, "); SQL.Add(" XLXSBJD_WHRID,XLXSBJD_WHR,XLXSBJD_WHSJ ,XLXSBJD_XMMC, XLXSBJD_KH"); SQL.Add(" ) "); SQL.Add(" values "); SQL.Add(" ( "); SQL.Add(" :XLXSBJD_BJDID,:XLXSBJD_CLHQJGBID,"); SQL.Add(" :XLXSBJD_BJFLID,:XLXSBJD_XSQYID,:XLXSBJD_XZQHID,"); SQL.Add(" :XLXSBJD_SYDWID,:XLXSBJD_XSJLMC,:XLXSBJD_TXY,:XLXSBJD_XSBMID, "); SQL.Add(" :XLXSBJD_KHLXR,:XLXSBJD_LXDH,:XLXSBJD_JZBJHS,"); SQL.Add(" :XLXSBJD_TJ,:XLXSBJD_LJ,"); SQL.Add(" :XLXSBJD_SQR,:XLXSBJD_SQRGH,:XLXSBJD_SQRID,:XLXSBJD_SQRQ,"); SQL.Add(" :XLXSBJD_BJRQ, :XLXSBJD_JGBID,"); SQL.Add(" :XLXSBJD_YWLX,:XLXSBJD_YWDH,'ZZZZ', "); SQL.Add(" :XLXSBJD_WHRID,:XLXSBJD_WHR,:XLXSBJD_WHSJ ,:XLXSBJD_XMMC ,:XLXSBJD_KH"); SQL.Add(" ) "); SQL.ParamByName("XLXSBJD_BJDID").Value = sBJDID; if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select top 1 XLXSBJFLBJRHQCL_BJCLID from XLXSBJFLBJRHQCL where XLXSBJFLBJRHQCL_BJFLID='{0}'", sJGBID))) { SQL.ParamByName("XLXSBJD_CLHQJGBID").Value = "ZZZZZZZZ"; } else { SQL.ParamByName("XLXSBJD_CLHQJGBID").Value = sJGBID; } SQL.ParamByName("XLXSBJD_BJFLID").Value = sBJFLID; SQL.ParamByName("XLXSBJD_XSQYID").Value = sXSQYID; SQL.ParamByName("XLXSBJD_XZQHID").Value = sXZQHID; SQL.ParamByName("XLXSBJD_SYDWID").Value = sSYDWID; SQL.ParamByName("XLXSBJD_XSJLMC").Value = sXSJLMC; SQL.ParamByName("XLXSBJD_TXY").Value = sTXY; SQL.ParamByName("XLXSBJD_XSBMID").Value = sXSBMID; SQL.ParamByName("XLXSBJD_KH").Value = sKH; SQL.ParamByName("XLXSBJD_KHLXR").Value = ""; SQL.ParamByName("XLXSBJD_LXDH").Value = ""; SQL.ParamByName("XLXSBJD_JZBJHS").Value = "Y"; SQL.ParamByName("XLXSBJD_TJ").Value = fTJ; SQL.ParamByName("XLXSBJD_LJ").Value = fLJ; SQL.ParamByName("XLXSBJD_SQR").Value = tSession.UserName; SQL.ParamByName("XLXSBJD_SQRGH").Value = tSession.UserId; SQL.ParamByName("XLXSBJD_SQRID").Value = TRYXX.GetRYXXByGH(tSession.UserId).RYID; SQL.ParamByName("XLXSBJD_SQRQ").Value = sBJRQ; SQL.ParamByName("XLXSBJD_BJRQ").Value = sBJRQ; SQL.ParamByName("XLXSBJD_JGBID").Value = sJGBID; SQL.ParamByName("XLXSBJD_YWLX").Value = sYWLX; SQL.ParamByName("XLXSBJD_YWDH").Value = sYWDH; SQL.ParamByName("XLXSBJD_WHRID").Value = tSession.UserId; SQL.ParamByName("XLXSBJD_WHR").Value = tSession.UserName; SQL.ParamByName("XLXSBJD_WHSJ").Value = DateTime.Now; SQL.ParamByName("XLXSBJD_XMMC").Value=dsHT.Tables[0].Rows[0]["HT_XMMC"].ToString().Trim(); dberp.ExecSQL(SQL); #endregion dt4 = DateTime.Now; Mac.MacLog.TraceFormat(String.Format("dt4:{0}---------------", dt4.ToString().Trim())); #region 处理物料行情 //只加载JGE价格表,外层判断可以去除 XLXSBJFLObj objXLXSBJFL = new XLXSBJFLObj(sBJFLID); XLBJDUtils.InsertXLXSBJDCLHQ_WLHQ(dberp, SQL, objXLXSBJFL.sBJDHQLY, sBJDID, sBJRQ, true, objXLXSBJFL.sTBJCLID, objXLXSBJFL.sLBJCLID, fTJ, fLJ, tSession.UserName, tSession.UserId, sJGBID); #endregion dt5 = DateTime.Now; Mac.MacLog.TraceFormat(String.Format("dt5:{0}---------------", dt5.ToString().Trim())); #region 明细变量初始化 string sXLXHID = ""; string sXLGGID = ""; string sXLBZID = ""; string sDYDJID = ""; string sBJDJLDW = ""; double fBJSL = 0; string sWLID = ""; int iStartXH = 1; string sErrorNum = ""; string sXLJGU007 = tSession.GetOption(102579000, "XLJGU007"); #endregion SQL.Clear(); SQL.Add(" insert into XLXSBJDMX( "); SQL.Add(" XLXSBJDMX_BJDID, XLXSBJDMX_XH, XLXSBJDMX_XSSX, XLXSBJDMX_XLXHID, XLXSBJDMX_XLGGID, "); SQL.Add(" XLXSBJDMX_XLBZID,XLXSBJDMX_DYDJID,XLXSBJDMX_XLYSID,XLXSBJDMX_BJCP,XLXSBJDMX_BJCPSD,XLXSBJDMX_WGCPBZ, "); SQL.Add(" XLXSBJDMX_JLDW,XLXSBJDMX_BJSL,XLXSBJDMX_BJSDBZ,XLXSBJDMX_XDXLXHID,XLXSBJDMX_XDXLBZID, "); SQL.Add(" XLXSBJDMX_DZSC,XLXSBJDMX_WHR,XLXSBJDMX_WHRID,XLXSBJDMX_WHSJ,"); SQL.Add(" XLXSBJDMX_YWLX,XLXSBJDMX_YWDH,XLXSBJDMX_YWXH,XLXSBJDMX_WLID, "); SQL.Add(" XLXSBJDMX_BZ) "); SQL.Add(" values("); SQL.Add(" :XLXSBJDMX_BJDID, :XLXSBJDMX_XH, :XLXSBJDMX_XSSX, :XLXSBJDMX_XLXHID, :XLXSBJDMX_XLGGID, "); SQL.Add(" :XLXSBJDMX_XLBZID, isnull(:XLXSBJDMX_DYDJID,' '), :XLXSBJDMX_XLYSID, :XLXSBJDMX_BJCP, :XLXSBJDMX_BJCPSD,:XLXSBJDMX_WGCPBZ, "); SQL.Add(" :XLXSBJDMX_JLDW, :XLXSBJDMX_BJSL,:XLXSBJDMX_BJSDBZ,:XLXSBJDMX_XDXLXHID,:XLXSBJDMX_XDXLBZID, "); SQL.Add(" :XLXSBJDMX_DZSC,:XLXSBJDMX_WHR, :XLXSBJDMX_WHRID, :XLXSBJDMX_WHSJ,"); SQL.Add(" :XLXSBJDMX_YWLX,:XLXSBJDMX_YWDH,:XLXSBJDMX_YWXH,:XLXSBJDMX_WLID, "); SQL.Add(" :XLXSBJDMX_BZ)"); for (int i = 0; i < dsHT.Tables[0].Rows.Count; i++) { sXLXHID = dsHT.Tables[0].Rows[i]["XLXLB_XLXHID"].ToString().Trim(); sXLGGID = XLBJDUtils.GetStaXLGGID(dsHT.Tables[0].Rows[i]["XLXLB_XLGGID"].ToString().Trim(), sXLJGU007); sXLBZID = dsHT.Tables[0].Rows[i]["XLXLB_XLBZID"].ToString().Trim(); sDYDJID = dsHT.Tables[0].Rows[i]["XLXLB_DYDJID"].ToString().Trim(); sBJDJLDW = dsHT.Tables[0].Rows[i]["HTMX_JLDW"].ToString().Trim(); sWLID = dsHT.Tables[0].Rows[i]["HTMX_WLID"].ToString().Trim(); fBJSL = CMISproConvert.StrToFloat(dsHT.Tables[0].Rows[i]["HTMX_XQSL"].ToString().Trim()); fYWXH = CMISproConvert.StrToFloat(dsHT.Tables[0].Rows[i]["HTMX_XH"].ToString().Trim()); SQL.ParamByName("XLXSBJDMX_BJDID").Value = sBJDID; SQL.ParamByName("XLXSBJDMX_XH").Value = i + 1; SQL.ParamByName("XLXSBJDMX_XSSX").Value = i + 1; if (sXLXHID.Equals("")) { SQL.ParamByName("XLXSBJDMX_XLXHID").Value = "/"; } else { SQL.ParamByName("XLXSBJDMX_XLXHID").Value = sXLXHID; } if (sXLGGID.Equals("")) { SQL.ParamByName("XLXSBJDMX_XLGGID").Value = "/"; } else { SQL.ParamByName("XLXSBJDMX_XLGGID").Value = sXLGGID; } if (sXLXHID.Equals("") || sXLGGID.Equals("")) { SQL.ParamByName("XLXSBJDMX_BZ").Value = "【" + sYWDH + "|" + fYWXH + "】" + sWLID; } SQL.ParamByName("XLXSBJDMX_XDXLXHID").Value = SQL.ParamByName("XLXSBJDMX_XLXHID").Value; SQL.ParamByName("XLXSBJDMX_XDXLBZID").Value = sXLBZID; SQL.ParamByName("XLXSBJDMX_XLBZID").Value = sXLBZID; SQL.ParamByName("XLXSBJDMX_DYDJID").Value = sDYDJID; SQL.ParamByName("XLXSBJDMX_XLYSID").Value = dsHT.Tables[0].Rows[i]["XLXLB_XLYSID"].ToString().Trim(); SQL.ParamByName("XLXSBJDMX_BJCP").Value = XLBJDUtils.GroupBJCPXX(sXLXHID, sXLGGID, sDYDJID); SQL.ParamByName("XLXSBJDMX_BJCPSD").Value = "N"; SQL.ParamByName("XLXSBJDMX_WGCPBZ").Value = "N"; SQL.ParamByName("XLXSBJDMX_JLDW").Value = sBJDJLDW; SQL.ParamByName("XLXSBJDMX_BJSL").Value = fBJSL; SQL.ParamByName("XLXSBJDMX_BJSDBZ").Value = "N"; if (XLBJDUtils.ISDZBZ(sXLBZID)) { SQL.ParamByName("XLXSBJDMX_DZSC").Value = "Y"; } else { SQL.ParamByName("XLXSBJDMX_DZSC").Value = "N"; } SQL.ParamByName("XLXSBJDMX_WHR").Value = tSession.UserName; SQL.ParamByName("XLXSBJDMX_WHRID").Value = tSession.UserId; SQL.ParamByName("XLXSBJDMX_WHSJ").Value = DateTime.Now; SQL.ParamByName("XLXSBJDMX_YWLX").Value = sYWLX; SQL.ParamByName("XLXSBJDMX_YWDH").Value = sYWDH; SQL.ParamByName("XLXSBJDMX_YWXH").Value = fYWXH; SQL.ParamByName("XLXSBJDMX_WLID").Value = sWLID; dberp.ExecSQL(SQL); } dt6 = DateTime.Now; Mac.MacLog.TraceFormat(String.Format("dt6:{0}---------------", dt6.ToString().Trim())); XLBJDUtils.UpdateXDXLBZID(dberp, SQL, sBJDID, "", iStartXH - 1, ref sErrorNum); XLBJDUtils.SyncXLXSBJXLGGTHB_ByXLXSBJDMX_Batch(dberp, tSession, sBJDID); XLBJDCalcUtils.CalcBJDMXAfterIns(dberp, SQL, sBJDID, iStartXH, tSession.GetOption(100860000, "BJU002"), tSession.GetOption(100860000, "BJU003"),tSession.GetOption(100860000, "BJU018"), tSession.UserId, tSession.UserName, ref sErrorNum); if (!sErrorNum.Equals("")) { throw new Exception("计算异常!异常信息:" + sErrorNum); } dt7 = DateTime.Now; Mac.MacLog.TraceFormat(String.Format("dt7:{0}---------------", dt7.ToString().Trim())); SQL.Clear(); SQL.Add(" merge into XLXSBJDYZZ0 tar "); SQL.Add(" using "); SQL.Add(" ( "); SQL.Add(" select XLXSBJDMX_XH as BJDXH,XLXSBJDYZZ0_YZZ01 as YZZ01,XLXSBJDYZZ0_YZZ02 as YZZ02,XLXSBJDYZZ0_YZZ03 as YZZ03,XLXSBJDYZZ0_YZZ04 as YZZ04, "); SQL.Add(" XLXSBJDYZZ0_YZZ05 as YZZ05,XLXSBJDYZZ0_YZZ06 as YZZ06,XLXSBJDYZZ0_YZZ07 as YZZ07,XLXSBJDYZZ0_YZZ08 as YZZ08,XLXSBJDYZZ0_YZZ09 as YZZ09,XLXSBJDYZZ0_YZZ10 as YZZ10, "); SQL.Add(" XLXSBJDYZZ0_YZZ11 as YZZ11,XLXSBJDYZZ0_YZZ12 as YZZ12,XLXSBJDYZZ0_YZZ13 as YZZ13,XLXSBJDYZZ0_YZZ14 as YZZ14, "); SQL.Add(" XLXSBJDYZZ0_YZZ15 as YZZ15,XLXSBJDYZZ0_YZZ16 as YZZ16,XLXSBJDYZZ0_YZZ17 as YZZ17,XLXSBJDYZZ0_YZZ18 as YZZ18,XLXSBJDYZZ0_YZZ19 as YZZ19,XLXSBJDYZZ0_YZZ20 as YZZ20 "); SQL.Add(" from HTMX "); SQL.Add(" left join XLXSBJDYZZ0 on XLXSBJDYZZ0_BJDID=HTMX_BJDID and XLXSBJDYZZ0_XH=HTMX_BJDXH "); SQL.Add(" left join XLXSBJDMX on XLXSBJDMX_BJDID=:sBJDID and XLXSBJDMX_YWDH=HTMX_JJDID and XLXSBJDMX_YWXH=HTMX_XH and XLXSBJDMX_YWLX='HT' "); SQL.Add(" where HTMX_JJDID=:sJJDID and isnull(XLXSBJDYZZ0_BJDID,' ')<>' ' "); SQL.Add(" ) sor on (XLXSBJDYZZ0_BJDID=:sBJDID and XLXSBJDYZZ0_XH=BJDXH) "); SQL.Add(" when matched then update set XLXSBJDYZZ0_YZZ01=YZZ01,XLXSBJDYZZ0_YZZ02=YZZ02,XLXSBJDYZZ0_YZZ03=YZZ03,XLXSBJDYZZ0_YZZ04=YZZ04,XLXSBJDYZZ0_YZZ05=YZZ05, "); SQL.Add(" XLXSBJDYZZ0_YZZ06=YZZ06,XLXSBJDYZZ0_YZZ07=YZZ07,XLXSBJDYZZ0_YZZ08=YZZ08,XLXSBJDYZZ0_YZZ09=YZZ09,XLXSBJDYZZ0_YZZ10=YZZ10, "); SQL.Add(" XLXSBJDYZZ0_YZZ11=YZZ11,XLXSBJDYZZ0_YZZ12=YZZ12,XLXSBJDYZZ0_YZZ13=YZZ13,XLXSBJDYZZ0_YZZ14=YZZ14,XLXSBJDYZZ0_YZZ15=YZZ15, "); SQL.Add(" XLXSBJDYZZ0_YZZ16=YZZ16,XLXSBJDYZZ0_YZZ17=YZZ17,XLXSBJDYZZ0_YZZ18=YZZ18,XLXSBJDYZZ0_YZZ19=YZZ19,XLXSBJDYZZ0_YZZ20=YZZ20 "); SQL.ParamByName("sBJDID").Value = sBJDID; SQL.ParamByName("sJJDID").Value = sJJDID; dberp.ExecSQL(SQL); dt7 = DateTime.Now; Mac.MacLog.TraceFormat(String.Format("dt7:{0}---------------", dt7.ToString().Trim())); string sErrorMsg = ""; XLBJDCalcUtils.CalcAfterBJDYZZChange(dberp, SQL, sBJDID, 1, "", false, false, false, "", DateTime.MinValue, tSession.GetOption(100860000, "BJU002"), tSession.GetOption(100860000, "BJU003"), tSession.UserId, tSession.UserName, ref sErrorMsg); if (!sErrorMsg.Equals("")) throw new Exception(sErrorMsg); dberp.CommitTrans(); } catch (Exception ex) { dberp.RollbackTrans(); throw new Exception(ex.Message.ToString().Trim()); } dt8 = DateTime.Now; Mac.MacLog.TraceFormat(String.Format("dt8:{0}---------------", dt8.ToString().Trim())); } else { throw new Exception("未找到对应合同信息:"+sJJDID); } TimeSpan sp2 = dt2 - dt1; TimeSpan sp3 = dt3 - dt2; TimeSpan sp4 = dt4 - dt3; TimeSpan sp5 = dt5 - dt4; TimeSpan sp6 = dt6 - dt5; TimeSpan sp7 = dt7 - dt6; TimeSpan sp8 = dt8 - dt7; double dTotal2 = sp2.TotalSeconds; double dTotal3 = sp3.TotalSeconds; double dTotal4 = sp4.TotalSeconds; double dTotal5 = sp5.TotalSeconds; double dTotal6 = sp6.TotalSeconds; double dTotal7 = sp7.TotalSeconds; double dTotal8 = sp8.TotalSeconds; Mac.MacLog.TraceFormat(String.Format("dTotal2耗时:{0}---------------", dTotal2.ToString().Trim())); Mac.MacLog.TraceFormat(String.Format("dTotal3耗时:{0}---------------", dTotal3.ToString().Trim())); Mac.MacLog.TraceFormat(String.Format("dTotal4耗时:{0}---------------", dTotal4.ToString().Trim())); Mac.MacLog.TraceFormat(String.Format("dTotal5耗时:{0}---------------", dTotal5.ToString().Trim())); Mac.MacLog.TraceFormat(String.Format("dTotal6耗时:{0}---------------", dTotal6.ToString().Trim())); Mac.MacLog.TraceFormat(String.Format("dTotal7耗时:{0}---------------", dTotal7.ToString().Trim())); Mac.MacLog.TraceFormat(String.Format("dTotal8耗时:{0}---------------", dTotal8.ToString().Trim())); CheckBJisZoro(dberp, SQL, objOUT, sBJDID); } /// /// 校验表价是否为0 /// /// /// /// /// private static void CheckBJisZoro(TDatabase dberp, TSQL SQL, XSHTSCBJDData objOUT, string sBJDID) { #region 校验表价为0或为负 SQL.Clear(); SQL.Add(" select XLXSBJDMX_YWXH,XLXSBJDMX_JGBBJ,XLXSBJDMX_WLID,XLXSBJDMX_JSYCBZ from XLXSBJDMX where XLXSBJDMX_BJDID=:pBJDID and XLXSBJDMX_JGBBJ<=0 "); SQL.ParamByName("pBJDID").Value = sBJDID; DataSet dsFBJ = dberp.OpenDataSet(SQL); if (dsFBJ.Tables[0].Rows.Count > 0) { Dictionary dicJGBTJYZ = new Dictionary(); 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()); } } string sTS = "计算如下物料的价格异常:\n\r"; foreach (DataRow trow in dsFBJ.Tables[0].Rows) { string sJTXX = "序号" + trow["XLXSBJDMX_YWXH"].ToString().Trim() + ",【" + trow["XLXSBJDMX_WLID"].ToString().Trim() + "】"; double dJGBBJ = CMISproConvert.StrToFloat(trow["XLXSBJDMX_JGBBJ"].ToString().Trim()); if (dJGBBJ < 0) { string sJSYCBZ = trow["XLXSBJDMX_JSYCBZ"].ToString().Trim(); sJTXX += "\n" + XLBJD_FBJXQList.GetJSYCXQ(sJSYCBZ, dicJGBTJYZ) + "\n\r"; } else sJTXX += "价格为0 \n\r"; sTS += sJTXX; } Mac.MacLog.TraceFormat(String.Format("报价单:{0}---------------" + sTS, sBJDID)); objOUT.ErrorMessage = sTS; } #endregion } private static CMISproSession getSession() { return CMISproSessionManager.GetCurrentSession(); } /// /// 获取销售报价业务配置模块100452001配置的报价分类 /// /// /// /// private static string GetBJFLID(TDatabase dberp, TSQL SQL) { SQL.Clear(); SQL.Add("select XLXSBJPZ_BJFLIDS "); SQL.Add(" from XLXSBJPZ "); SQL.Add(" where 1=1 "); SQL.Add(" and XLXSBJPZ_MDID = 100860087 "); DataSet ds = dberp.OpenDataSet(SQL); if (ds.Tables[0].Rows.Count > 0) { return ds.Tables[0].Rows[0][0].ToString().Trim(); } return ""; } /// /// 根据当前用户获取使用单位,如果为空,则获取第一个使用单位 /// /// /// /// /// private static string GetSWDWID(TDatabase dberp, TSQL SQL, string sUserGH) { string sSYDWID = ""; SQL.Clear(); SQL.Add("select RSRYJBXX_SYDWID "); SQL.Add(" from RSRYJBXX "); SQL.Add(" where 1=1 "); SQL.Add(" and RSRYJBXX_GH = :pGH "); SQL.ParamByName("pGH").Value = sUserGH; DataSet ds = dberp.OpenDataSet(SQL); if (ds.Tables[0].Rows.Count > 0) { sSYDWID = ds.Tables[0].Rows[0][0].ToString().Trim(); if (sSYDWID.Equals("")) { SQL.Clear(); SQL.Add(" select GS_SYDWID,GS_GSMC from GS where 1=1 order by GS_SYDWID "); ds = dberp.OpenDataSet(SQL); if (ds.Tables[0].Rows.Count > 0) { sSYDWID = ds.Tables[0].Rows[0][0].ToString().Trim(); } } } return sSYDWID; } /// /// 获取推销员的经理和部门 /// /// /// /// /// /// private static void GetXSYXX(TDatabase dberp, TSQL SQL, string sTXY, ref string sXSJLMC, ref string sXSBMID) { SQL.Clear(); SQL.Add(" select A.XSY_BMID,A.XSY_XSYBH,B.XSY_TXY from XSY A "); SQL.Add(" LEFT JOIN XSY B ON B.XSY_XSYBH = A.XSY_SJXSYBH "); SQL.Add(" WHERE A.XSY_TXY = :pXSY_TXY "); SQL.ParamByName("pXSY_TXY").Value = sTXY; DataSet ds = dberp.OpenDataSet(SQL); if (ds.Tables[0].Rows.Count > 0) { sXSJLMC = ds.Tables[0].Rows[0]["XSY_TXY"].ToString().Trim(); sXSBMID = ds.Tables[0].Rows[0]["XSY_BMID"].ToString().Trim(); } return; } /// /// 删除报价单 /// /// 报价单号 /// [AjaxMethod(AuthRequried = false)] public static XSHTSCBJDDel DelteXLXSBJD(string sBJDID) { XSHTSCBJDDel objOUT = new XSHTSCBJDDel(); objOUT.Success = true; objOUT.ErrorMessage = ""; TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL SQL = new TSQL(dberp); try { dberp.BeginTrans(); SQL.Clear(); SQL.Add("delete from XLXSBJD"); SQL.Add(" where 1=1"); SQL.Add(" and XLXSBJD_BJDID = :pBJDID"); SQL.ParamByName("pBJDID").Value = sBJDID; dberp.ExecSQL(SQL); XLBJDUtils.AfterDeleteBJD(dberp, SQL, sBJDID); dberp.CommitTrans(); } catch (Exception ex) { dberp.RollbackTrans(); objOUT.Success = false; objOUT.ErrorMessage = ex.Message; } return objOUT; } #endregion } #region 插入报价单明细返回类 public class XSHTSCBJDData { /// /// 调用情况 /// private bool _Success = true; public bool Success { get { return _Success; } set { _Success = value; } } /// /// 失败信息 /// private string _ErrorMessage = string.Empty; public string ErrorMessage { get { return _ErrorMessage; } set { _ErrorMessage = value; } } } #endregion #region 删除报价单返回类 public class XSHTSCBJDDel { /// /// 调用情况 /// private bool _Success = true; public bool Success { get { return _Success; } set { _Success = value; } } /// /// 失败信息 /// private string _ErrorMessage = string.Empty; public string ErrorMessage { get { return _ErrorMessage; } set { _ErrorMessage = value; } } } #endregion }