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_MODEL.Page; using GThinking.N_MISPRO.Data; using GThinking.N_MISPRO.Utility; using GThinking.N_PUBLIC; using GThinking.N_WORKFLOW; using System.Text; using System.Collections.Generic; using GThinking.N_MISPRO.TableCache; using System.IO; using GThinking.N_MISPRO.MISPROAS; using GThinking.N_COMPRESS; using System.Xml; namespace GThinking.N_XLXSBJ { public partial class CLYLList : SingleGridBase { CLYL entity = new CLYL(); CLYL_M queryentity = new CLYL_M(); Dictionary dicHeaderText = new Dictionary(); protected void Page_Load(object sender, EventArgs e) { this.UMID = 100860014; this.UMName = "线缆销售报价材料用量"; this.CurMaster = Master; this.ModuleGV = grdGrid; this.CurEntity = entity; this.CurQueryEntity = queryentity; this.sURLTarget = "CLYLInfo.aspx"; this.sQueryURLTarget = "CLYLQuery.aspx"; this.PageHeight = 600; this.PageWidth = 750; base.DataKeyNames = new string[] { "XLXSCLQD_XLXHID", "XLXSCLQD_XLGGID", "XLXSCLQD_XLBZID", "XLXSCLQD_DYDJID","XLBZ", "XLXSCLQD_GCID", "XLXSCLQD_WLID", "XLXSCLQD_JGCZBID", "XLXSCLQD_JGCZBBBID", "XLXSCLQD_BJDID","XLXSCLQD_WFAWAITER" }; Master.EnableAttachBtn = false; if (!IsPostBack) { if (PageParam.ContainsKey("SYSW")) { this.CurQueryEntity.FieldByName("SW").Value = "A"; } else { this.CurQueryEntity.FieldByName("SW").Value = "W"; } if (PageParam.ContainsKey("XLXSBJDID")) { this.CurQueryEntity.FieldByName("DYBJDH").Value = PageParam.GetRTrimString("XLXSBJDID"); } else { this.CurQueryEntity.FieldByName("DYBJDH").Value = ""; } this.CurQueryEntity.FieldByName("PXFS").Value = ""; //if (PageParam.ContainsKey("XLXSBJDID")) //{ // this.CurQueryEntity.FieldByName("BJDID").Value = PageParam.GetRTrimString("XLXSBJDID").Trim(); //} } //是否注册了101449003|线缆物料模块 if (DSActiveModule.IsActiveModule(101449003)) { btnDR.Style["display"] = "block"; } else btnDR.Style["display"] = "none"; //是否注册了100582051|物料底层材料用料计算 //if (DSActiveModule.IsActiveModule(100582051)) //{ // btnDCWLYL.Style["display"] = "block"; //} //else // btnDCWLYL.Style["display"] = "none"; btnDCWLYL.Style["display"] = "none"; base.InitPage(); if (!IsPostBack) { Master_OnStandardQuery(null, null); } if (Request.Form["BBYS"] != null) { string sRepXML = Request.Form["BBYS"].ToString(); string sColumnCount = Request.Form["ColumnCount"].ToString(); string sJGCZBID = Request.Form["JGCZBID"].ToString(); string sJGCZBBBID = Request.Form["JGCZBBBID"].ToString(); string sWPID = Request.Form["WPID"].ToString(); string sUserId = Request.Form["UserId"].ToString(); string sCZBJLDW = Request.Form["CZBJLDW"].ToString(); ReadBBYS(sRepXML, sColumnCount, sJGCZBID, sJGCZBBBID, sWPID, sUserId, sCZBJLDW); } } #region 模板继承事件 protected override void Master_OnStandardQuery(object sender, EventArgs e) { base.InitEntityByCondition(); entity.EntityTable.QuerySelSql = GetQuerySQL(); base.Master_OnStandardQuery(sender, e); IfExistMC_Get(); initGrid(); entity.GridDataBind(grdGrid, tSession); } protected override void moduleGV_PageIndexChanging(object sender, GridViewPageEventArgs e) { base.InitEntityByCondition(); entity.EntityTable.QuerySelSql = GetQuerySQL(); grdGrid.SelectedIndex = -1; IfExistMC_Get(); initGrid(); base.moduleGV_PageIndexChanging(sender, e); } protected override bool Master_BeforeDeleteAction(object sender, EventArgs e) { entity.Param.Add("XLXSCLQD_XLXHID", grdGrid.DataKeys[grdGrid.SelectedIndex]["XLXSCLQD_XLXHID"].ToString().Trim()); entity.Param.Add("XLXSCLQD_XLGGID", grdGrid.DataKeys[grdGrid.SelectedIndex]["XLXSCLQD_XLGGID"].ToString().Trim()); entity.Param.Add("XLXSCLQD_XLBZID", grdGrid.DataKeys[grdGrid.SelectedIndex]["XLXSCLQD_XLBZID"].ToString().Trim()); entity.Param.Add("XLXSCLQD_DYDJID", grdGrid.DataKeys[grdGrid.SelectedIndex]["XLXSCLQD_DYDJID"].ToString().Trim().Equals("") ? " " : grdGrid.DataKeys[grdGrid.SelectedIndex]["XLXSCLQD_DYDJID"].ToString().Trim()); return base.Master_BeforeDeleteAction(sender, e); } protected override bool Master_AfterDeleteAction(object sender, EventArgs e) { if (!base.Master_AfterDeleteAction(sender, e)) { return false; } base.InitEntityByCondition(); entity.EntityTable.QuerySelSql = GetQuerySQL(); IfExistMC_Get(); initGrid(); entity.GridDataBind(grdGrid, tSession); grdGrid.SelectedIndex = -1; return true; } protected override void AfterDelete(TDatabase db, ref bool ActionIsDone) { base.AfterDelete(db, ref ActionIsDone); TSQL tmpSQL = new TSQL(db); tmpSQL.Clear(); tmpSQL.Add("delete from XLXSCLQDWL "); tmpSQL.Add("where not exists(select 1 from XLXSCLQD "); tmpSQL.Add(" where XLXSCLQD_JGCZBID=XLXSCLQDWL_JGCZBID and XLXSCLQD_JGCZBBBID=XLXSCLQDWL_JGCZBBBID and XLXSCLQD_JGCZBXH=XLXSCLQDWL_JGCZBXH and XLXSCLQD_DRHH=XLXSCLQDWL_DRHH"); tmpSQL.Add(" )"); db.ExecSQL(tmpSQL); } protected override void moduleGV_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { if ((e.Row.Cells[0].Text.Trim() != "") && (e.Row.Cells[0].Text.Trim() != " ")) { try { e.Row.Cells[0].Text = this._curWorkFlow.GetWPName(grdGrid.DataKeys[e.Row.RowIndex]["XLXSCLQD_WFID"].ToString().Trim(), e.Row.Cells[0].Text.Trim()); } catch { e.Row.Cells[0].Text = ""; } } if ((e.Row.Cells[e.Row.Cells.Count - 5].Text.Trim() != "") && (e.Row.Cells[e.Row.Cells.Count - 5].Text.Trim() != " ")) { try { e.Row.Cells[e.Row.Cells.Count - 5].Text = this._curWorkFlow.UserInfo.GetUserNames(e.Row.Cells[e.Row.Cells.Count - 5].Text.Trim()); } catch { e.Row.Cells[e.Row.Cells.Count - 5].Text = ""; } } if ((e.Row.Cells[e.Row.Cells.Count - 4].Text.Trim() != "") && (e.Row.Cells[e.Row.Cells.Count - 4].Text.Trim() != " ")) { try { e.Row.Cells[e.Row.Cells.Count - 4].Text = this._curWorkFlow.UserInfo.GetUserNames(e.Row.Cells[e.Row.Cells.Count - 4].Text.Trim()); } catch { e.Row.Cells[e.Row.Cells.Count - 4].Text = ""; } } LinkPageParam.AddString("XLXSCLQD_XLXHID", grdGrid.DataKeys[e.Row.RowIndex]["XLXSCLQD_XLXHID"].ToString().Trim()); LinkPageParam.AddString("XLXSCLQD_XLGGID", grdGrid.DataKeys[e.Row.RowIndex]["XLXSCLQD_XLGGID"].ToString().Trim()); LinkPageParam.AddString("XLXSCLQD_XLBZID", grdGrid.DataKeys[e.Row.RowIndex]["XLXSCLQD_XLBZID"].ToString().Trim()); LinkPageParam.AddString("XLXSCLQD_DYDJID", grdGrid.DataKeys[e.Row.RowIndex]["XLXSCLQD_DYDJID"].ToString().Trim().Equals("") ? " " : grdGrid.DataKeys[e.Row.RowIndex]["XLXSCLQD_DYDJID"].ToString().Trim()); LinkPageParam.AddString("WFID", grdGrid.DataKeys[e.Row.RowIndex]["XLXSCLQD_WFID"].ToString().Trim()); LinkPageParam.AddString("WFInst", grdGrid.DataKeys[e.Row.RowIndex]["XLXSCLQD_WFINST"].ToString()); } base.moduleGV_RowDataBound(sender, e); } protected override bool CanSubmit() { string sXLXHID = grdGrid.DataKeys[grdGrid.SelectedIndex]["XLXSCLQD_XLXHID"].ToString().Trim(); string sXLGGID = grdGrid.DataKeys[grdGrid.SelectedIndex]["XLXSCLQD_XLGGID"].ToString().Trim(); string sXLBZID = grdGrid.DataKeys[grdGrid.SelectedIndex]["XLXSCLQD_XLBZID"].ToString().Trim(); string sDYDJID = grdGrid.DataKeys[grdGrid.SelectedIndex]["XLXSCLQD_DYDJID"].ToString().Trim().Equals("") ? " " : grdGrid.DataKeys[grdGrid.SelectedIndex]["XLXSCLQD_DYDJID"].ToString().Trim(); string sWFID = ""; string sWPID = ""; TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL sql = new TSQL(dberp); sql.Add("select XLXSCLQD_JGCZBID,XLXSCLQD_JGCZBBBID,XLXSCLQD_WPID,XLXSCLQD_WFID,"); for (int i = 1; i < 80; i++) { sql.Add(string.Format("XLXSCLQD_SL{0},XLXSCLQDWL_WLID{0},", i.ToString().PadLeft(2, '0'))); } sql.Add(" XLXSCLQD_SL80,XLXSCLQDWL_WLID80 "); sql.Add(" from XLXSCLQD "); sql.Add(" left join XLXSCLQDWL on XLXSCLQDWL_JGCZBID=XLXSCLQD_JGCZBID and XLXSCLQDWL_JGCZBBBID=XLXSCLQD_JGCZBBBID and XLXSCLQDWL_JGCZBXH=XLXSCLQD_JGCZBXH and XLXSCLQDWL_DRHH=XLXSCLQD_DRHH"); sql.Add(" where XLXSCLQD_XLXHID=:pXLXHID and XLXSCLQD_XLGGID=:pXLGGID and XLXSCLQD_XLBZID=:pXLBZID and XLXSCLQD_DYDJID=:pDYDJID"); sql.ParamByName("pXLXHID").Value = sXLXHID; sql.ParamByName("pXLGGID").Value = sXLGGID; sql.ParamByName("pXLBZID").Value = sXLBZID; sql.ParamByName("pDYDJID").Value = sDYDJID; DataSet ds = dberp.OpenDataSet(sql); if (ds.Tables[0].Rows.Count > 0) { sWFID = ds.Tables[0].Rows[0]["XLXSCLQD_WFID"].ToString().Trim(); sWPID = ds.Tables[0].Rows[0]["XLXSCLQD_WPID"].ToString().Trim(); string workparamer = this._curWorkFlow.GetWPOption(sWFID, sWPID, "结构尺重表为空不允许提交"); if (workparamer.Equals("Y")) { if (ds.Tables[0].Rows[0]["XLXSCLQD_JGCZBID"].ToString().Trim().Equals("")) { ShowMessage("结构尺重表--不允许为空!"); return false; } else if (!CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLJGCZBML where XLJGCZBML_JGCZBID='{0}' and XLJGCZBML_CZBLX='A'", ds.Tables[0].Rows[0]["XLXSCLQD_JGCZBID"].ToString().Trim()))) { ShowMessage("非“A|材料用量(直接维护)”类结构尺重表,请重新选择!"); return false; } } //校验:报价材料需要细分至物料而还没细分的 sql.Clear(); sql.Add("select XLJGCZBLM_CLQDL,XLXSBJCL_BJCLID,XLXSBJCL_BJCLMC"); sql.Add(" from XLJGCZBLM"); sql.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLJGCZBLM_BJCLID"); sql.Add(" where XLJGCZBLM_JGCZBID=:pJGCZBID and XLJGCZBLM_JGCZBBBID=:pJGCZBBBID and XLXSBJCL_BJHQ='2'"); sql.Add(" order by XLJGCZBLM_CLQDL"); sql.ParamByName("pJGCZBID").Value = ds.Tables[0].Rows[0]["XLXSCLQD_JGCZBID"].ToString().Trim(); sql.ParamByName("pJGCZBBBID").Value = ds.Tables[0].Rows[0]["XLXSCLQD_JGCZBBBID"].ToString().Trim(); DataSet dsLM = dberp.OpenDataSet(sql); for (int i = 0; i < dsLM.Tables[0].Rows.Count; i++) { string sCLQDL = dsLM.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); string tmpXH = sCLQDL.Replace("第", "").Replace("列", ""); double tmpSL = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["XLXSCLQD_SL" + tmpXH].ToString()); string tmpWLID = ds.Tables[0].Rows[0]["XLXSCLQDWL_WLID" + tmpXH].ToString().Trim(); if (tmpSL > 0 && tmpWLID.Equals("")) { ShowMessage(string.Format("{0}|{1}--已维护了材料用量,需要继续指定对应的材料物料才能提交!", dsLM.Tables[0].Rows[i]["XLXSBJCL_BJCLID"].ToString().Trim(), dsLM.Tables[0].Rows[i]["XLXSBJCL_BJCLMC"].ToString().Trim())); return false; } } } return base.CanSubmit(); } protected override void Master_wfAfterActionEvent(TWorkflow Sender, TWFAction Action, bool ActionIsDone) { base.Master_wfAfterActionEvent(Sender, Action, ActionIsDone); if (!ActionIsDone) return; string sXLXHID = grdGrid.DataKeys[grdGrid.SelectedIndex]["XLXSCLQD_XLXHID"].ToString().Trim(); string sXLGGID = grdGrid.DataKeys[grdGrid.SelectedIndex]["XLXSCLQD_XLGGID"].ToString().Trim(); string sXLBZID = grdGrid.DataKeys[grdGrid.SelectedIndex]["XLXSCLQD_XLBZID"].ToString().Trim(); string sDYDJID = grdGrid.DataKeys[grdGrid.SelectedIndex]["XLXSCLQD_DYDJID"].ToString().Trim().Equals("") ? " " : grdGrid.DataKeys[grdGrid.SelectedIndex]["XLXSCLQD_DYDJID"].ToString().Trim(); TSQL sSQL = new TSQL(Sender.dbe); sSQL.Clear(); sSQL.Add("select XLXSCLQD_WPID,XLXSCLQD_DRHH,XLXSCLQD_JGCZBXH,XLXSCLQD_JGCZBID,XLXSCLQD_JGCZBBBID,XLXSCLQD_CPMLID,XLJGCZBML_CZBLX from XLXSCLQD "); sSQL.Add("LEFT JOIN XLJGCZBML ON XLJGCZBML_JGCZBID = XLXSCLQD_JGCZBID "); sSQL.Add(" where XLXSCLQD_XLXHID=:pXLXHID and XLXSCLQD_XLGGID=:pXLGGID and XLXSCLQD_XLBZID=:pXLBZID and XLXSCLQD_DYDJID=:pDYDJID"); sSQL.ParamByName("pXLXHID").Value = sXLXHID; sSQL.ParamByName("pXLGGID").Value = sXLGGID; sSQL.ParamByName("pXLBZID").Value = sXLBZID; sSQL.ParamByName("pDYDJID").Value = sDYDJID; DataSet ds = Sender.dbe.OpenDataSet(sSQL); string sWPID = ""; double dDRHH = 0; double dJGCZBXH = 0; string sJGCZBID = ""; string sJGCZBBBID = ""; string sCPMLID = ""; string sJGCZBLX = ""; if (ds.Tables[0].Rows.Count > 0) { sWPID = ds.Tables[0].Rows[0]["XLXSCLQD_WPID"].ToString().Trim(); dDRHH = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["XLXSCLQD_DRHH"].ToString()); dJGCZBXH = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["XLXSCLQD_JGCZBXH"].ToString()); sJGCZBID = ds.Tables[0].Rows[0]["XLXSCLQD_JGCZBID"].ToString().Trim(); sJGCZBBBID = ds.Tables[0].Rows[0]["XLXSCLQD_JGCZBBBID"].ToString().Trim(); sCPMLID = ds.Tables[0].Rows[0]["XLXSCLQD_CPMLID"].ToString().Trim(); sJGCZBLX = ds.Tables[0].Rows[0]["XLJGCZBML_CZBLX"].ToString().Trim(); } if (Sender.WPID.Equals("ZZZZ")) { if (Action == TWFAction.wfaSubmit) { if (sJGCZBID.Equals("")) { ActionIsDone = false; throw new Exception("结构尺重表不允许为空!"); } else if (!sJGCZBLX.Equals("A")) { ActionIsDone = false; throw new Exception("非“A|材料用量(直接维护)”类结构尺重表,请重新选择!"); } } } Sender.dbe.ExecSQL(string.Format("update XLXSCLQD set XLXSCLQD_WFID = '{0}', XLXSCLQD_WPID = '{1}', XLXSCLQD_WFAWAITER= '{2}',XLXSCLQD_WFHANDLER = '{3}',XLXSCLQD_WFINST = {4},XLXSCLQD_ACTNAME = '{5}' where XLXSCLQD_XLXHID='{6}' and XLXSCLQD_XLGGID='{7}' and XLXSCLQD_XLBZID='{8}' and XLXSCLQD_DYDJID='{9}'", Sender.WFID, Sender.WPID, Sender.Awaiter, Sender.Handler, Sender.WFInst, Sender.GetWFActionName(Action), sXLXHID, sXLGGID, sXLBZID, sDYDJID)); //提交至结束,补齐XLXHJGCZBML和XLXHJGCZBNR的数据 if (Sender.WPID.Equals("ZZZZ") && Action == TWFAction.wfaSubmit) { if (ds.Tables[0].Rows.Count > 0) { CLYLInfo.UpdateXLXSCLQD(Sender.dbe, sJGCZBID, sJGCZBBBID, sXLXHID, sXLGGID, sXLBZID, sDYDJID, tSession.UserId, tSession.UserName); //交由“100860000|线缆销售报价单”手动触发更新 //CLYLInfo.UpdateBJDHQCLCB(Sender.dbe, sXLXHID, sXLGGID, sXLBZID, sDYDJID, sCPMLID, GetOption(100860001, "BJU002"), GetOption("BJU003")); } } //从结束撤回或调度时 if (sWPID.Trim().Equals("ZZZZ") && !Sender.WPID.Trim().Equals("ZZZZ")) { if (ds.Tables[0].Rows.Count > 0) { CLYLInfo.UpdateXLXSCLQD2(Sender.dbe, sJGCZBID, sJGCZBBBID, dJGCZBXH, dDRHH, sXLXHID, sXLGGID, sXLBZID, sDYDJID); } } } #endregion #region 自定义事件 private string GetQuerySQL() { StringBuilder sSQL = new StringBuilder(); sSQL.AppendLine("select XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_XLBZID,RTRIM(XLXSCLQD_XLBZID)||'|'||XLBZ_XLBZLXMC as XLBZ,XLXSCLQD_DYDJID,'" + GetOption("BJU003") + "' as JLDW,"); sSQL.AppendLine(" XLXSCLQD_GCID,case when isnull(XLXSCLQD_GCID,' ')=' ' then ' ' else rtrim(XLXSCLQD_GCID)||'|'||GC_GCMC end as GC,"); sSQL.AppendLine(" case when isnull(XLJGCZBML_JGCZBID,' ') = ' ' then ' ' else rtrim(XLJGCZBML_JGCZBID) || '|' || rtrim(XLJGCZBML_JGCZBMC) || '|' || XLXSCLQD_JGCZBBBID end as JGCZB, "); sSQL.AppendLine(" XLXSCLQD_WLID,case when isnull(XLXSCLQD_WLID,' ')=' ' then ' ' else rtrim(isnull(XLXSCLQD_WLID,' '))||'|'||"); sSQL.AppendLine(" rtrim(rtrim(rtrim(rtrim(isnull(WL_MC,' '))||' '||rtrim(isnull(WL_GG,' ')))||' '||rtrim(isnull(WL_TZ,' ')))||' '||rtrim(isnull(WL_CL,' ')))||'|'||rtrim(isnull(WL_JLDW,' ')) end as XLCP,"); for (int i = 1; i <= 80; i++) { sSQL.AppendLine(string.Format("rtrim(convert(char,XLXSCLQD_SL{0}))||'Kg|'||rtrim(convert(char,XLXSCLQD_CLJGBL{0}))||'|'||rtrim(convert(char,XLXSCLQD_SHL{0}))||'%' as CL{0},", i.ToString().PadLeft(2, '0'))); } sSQL.AppendLine(" XLXSCLQD_CPMLID,XLXSCLQD_BZ,XLXSCLQD_WHR,XLXSCLQD_WHRID,XLXSCLQD_WHSJ,XLXSCLQD_JGCZBID,XLXSCLQD_JGCZBBBID,XLXSCLQD_CLZL,XLXSCLQD_BJDID,XLXSBJDMX_XSSX,"); sSQL.AppendLine(" XLXSCLQD_WFID,XLXSCLQD_WPID,XLXSCLQD_WFINST,XLXSCLQD_WFAWAITER,XLXSCLQD_WFHANDLER,XLXSCLQD_ACTNAME "); sSQL.AppendLine(" from XLXSCLQD left join XLBZ on XLBZ_XLBZID = XLXSCLQD_XLBZID "); sSQL.AppendLine(" left join GC on GC_GCID = XLXSCLQD_GCID "); sSQL.AppendLine(" left join WL on WL_WLID = XLXSCLQD_WLID "); sSQL.AppendLine(" left join XLXSBJDMX on XLXSBJDMX_BJDID = XLXSCLQD_BJDID "); sSQL.AppendLine(" and XLXSBJDMX_XH = XLXSCLQD_BJDXH "); sSQL.AppendLine(" left join XLJGCZBML on XLJGCZBML_JGCZBID = XLXSCLQD_JGCZBID and XLJGCZBML_JGCZBBBID = XLXSCLQD_JGCZBBBID "); sSQL.AppendLine(" where isnull(XLXSCLQD_WFID,' ')<>' ' "); if (this.CurQueryEntity.FieldByName("SW").Value.ToString().Trim().Equals("W")) { sSQL.AppendLine(" and " + _curWorkFlow.GetWhereAgent("XLXSBJCLYL", tSession.UserId, "XLXSCLQD_WFAWAITER", "XLXSCLQD_WFID", "XLXSCLQD_WPID")); } else if (this.CurQueryEntity.FieldByName("SW").Value.ToString().Trim().Equals("H")) { sSQL.AppendLine(" and XLXSCLQD_WFHANDLER like :XLXSCLQD_WFHANDLER "); entity.Param.Add("XLXSCLQD_WFHANDLER", "%," + tSession.UserId + ",%"); } if (!string.IsNullOrEmpty(CurQueryEntity.FieldByName("WFAWAITER").Value.Trim())) { sSQL.AppendLine(" and XLXSCLQD_WFAWAITER like :pWFAWITER "); entity.Param.Add("pWFAWITER", string.Format("%,{0},%", CurQueryEntity.FieldByName("WFAWAITER").Value.Trim())); } if (!string.IsNullOrEmpty(CurQueryEntity.FieldByName("WPID").Value.Trim())) { sSQL.AppendLine(" and " + CMISproDataBase.GetWhereEqual("XLXSCLQD_WPID", CurQueryEntity.FieldByName("WPID").Value.Trim())); } if (!string.IsNullOrEmpty(CurQueryEntity.FieldByName("JGCZBID").Value.Trim())) { sSQL.AppendLine(" and XLXSCLQD_JGCZBID = :pJGCZBID "); entity.Param.Add("pJGCZBID", CurQueryEntity.FieldByName("JGCZBID").Value.Trim().Split('|')[0]); } if (!string.IsNullOrEmpty(CurQueryEntity.FieldByName("JGCZBBBID").Value.Trim())) { sSQL.AppendLine(" and XLXSCLQD_JGCZBBBID = :pJGCZBBBID "); entity.Param.Add("pJGCZBBBID", CurQueryEntity.FieldByName("JGCZBBBID").Value.Trim()); } if (!string.IsNullOrEmpty(CurQueryEntity.FieldByName("CPMLID").Value.Trim())) { sSQL.AppendLine(" and XLXSCLQD_CPMLID = :pCPMLID "); entity.Param.Add("pCPMLID", CurQueryEntity.FieldByName("CPMLID").Value.Trim()); } if (!string.IsNullOrEmpty(CurQueryEntity.FieldByName("XLXHID").Value.Trim())) { sSQL.AppendLine(" and XLXSCLQD_XLXHID = :pXLXHID "); entity.Param.Add("pXLXHID", CurQueryEntity.FieldByName("XLXHID").Value.Trim()); } if (!string.IsNullOrEmpty(CurQueryEntity.FieldByName("XLGGID").Value.Trim())) { sSQL.AppendLine(" and XLXSCLQD_XLGGID like :pXLGGID "); entity.Param.Add("pXLGGID", "%" + CurQueryEntity.FieldByName("XLGGID").Value.Trim() + "%"); } if (!CurQueryEntity.FieldByName("WLID").Value.Trim().Equals("")) { sSQL.AppendLine(" and XLXSCLQD_WLID like :pWLID "); entity.Param.Add("pWLID", "%" + CurQueryEntity.FieldByName("WLID").Value.Trim() + "%"); } if (!CurQueryEntity.FieldByName("WLMC").Value.Trim().Equals("")) { sSQL.AppendLine(" and WL_MC like :pWLMC "); entity.Param.Add("pWLMC", "%" + CurQueryEntity.FieldByName("WLMC").Value.Trim() + "%"); } if (!string.IsNullOrEmpty(CurQueryEntity.FieldByName("GCID").Value.Trim())) { sSQL.AppendLine(" and XLXSCLQD_GCID = :pGCID "); entity.Param.Add("pGCID", CurQueryEntity.FieldByName("GCID").Value.Trim()); } if (!CurQueryEntity.FieldByName("BJDID").Value.Trim().Equals("")) { sSQL.AppendLine(" and XLXSCLQD_BJDID = :pBJDID "); entity.Param.Add("pBJDID", CurQueryEntity.FieldByName("BJDID").Value.Trim()); } if (PageParam.ContainsKey("XLXSBJDID") && !string.IsNullOrEmpty(PageParam.GetRTrimString("XLXSBJDID"))) { sSQL.AppendLine(" and exists (select 1 from XLXSBJYLZDMX "); sSQL.AppendLine(" left join XLXSBJYLZD on XLXSBJYLZD_SQDH = XLXSBJYLZDMX_SQDH where XLXSCLQD_XLXHID=XLXSBJYLZDMX_XLXHID and XLXSCLQD_XLGGID = XLXSBJYLZDMX_XLGGID "); sSQL.AppendLine(" and XLXSCLQD_XLBZID=XLXSBJYLZDMX_XLBZID and XLXSCLQD_DYDJID = XLXSBJYLZDMX_DYDJID and XLXSBJYLZD_BJDID = :XLXSBJYLZD_BJDID ) "); entity.Param.Add("XLXSBJYLZD_BJDID", PageParam.GetRTrimString("XLXSBJDID")); } if (CurQueryEntity.FieldByName("PXFS").Value.Trim().Equals("维护时间倒排")) { sSQL.AppendLine(" order by XLXSCLQD_WHSJ DESC, XLXSCLQD_WLID,XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_XLBZID,XLXSCLQD_DYDJID "); } else if(CurQueryEntity.FieldByName("PXFS").Value.Trim().Equals("报价单号+显示序号")) { sSQL.AppendLine(" order by XLXSCLQD_BJDID,XLXSBJDMX_XSSX,XLXSCLQD_WLID,XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_XLBZID,XLXSCLQD_DYDJID "); } else { sSQL.AppendLine(" order by XLXSCLQD_WLID,XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_XLBZID,XLXSCLQD_DYDJID"); } return sSQL.ToString(); } private void IfExistMC_Get() { dicHeaderText.Clear(); if (string.IsNullOrEmpty(CurQueryEntity.FieldByName("JGCZBID").Value.Trim())) return; dicHeaderText = GetJGCZBCLYLLM(CurQueryEntity.FieldByName("JGCZBID").Value.Trim().Split('|')[0], CurQueryEntity.FieldByName("JGCZBBBID").Value.Trim()); SetColumnsVisible(); } private void initGrid() { for (int i = 1; i <= 80; i++) { string sCLQDL = "第" + i.ToString().PadLeft(2, '0') + "列"; string sExist = ""; if (dicHeaderText.ContainsKey(sCLQDL)) { sExist = dicHeaderText[sCLQDL].Trim(); } if (!sExist.Equals("")) { grdGrid.Columns[i + 12].HeaderText = sExist; } } } private void SetColumnsVisible() { if (dicHeaderText.Count > 0) { for (int i = 1; i <= 80; i++) { string sCLQDL = "第" + i.ToString().PadLeft(2, '0') + "列"; string sExist = ""; if (dicHeaderText.ContainsKey(sCLQDL)) { sExist = dicHeaderText[sCLQDL].Trim(); } if (sExist.Equals("")) { grdGrid.Columns[i + 12].Visible = false; } } } } //获取结构尺重表材料用量栏目信息 public static Dictionary GetJGCZBCLYLLM(string sJGCZBID, string sJGCZBBBID) { Dictionary dicResult = new Dictionary(); TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL sql = new TSQL(dberp); sql.Add(" select XLJGCZBLM_CLQDL, "); sql.Add(" case when isnull(XLXSBJCL_BJCLID,' ')=' ' then XLJGCZBLM_CZBLMMC else XLXSBJCL_BJCLMC end as CLMC"); sql.Add(" from XLJGCZBLM "); sql.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLJGCZBLM_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 = sJGCZBID; sql.ParamByName("pJGCZBBBID").Value = sJGCZBBBID; DataSet ds = dberp.OpenDataSet(sql); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { dicResult.Add((ds.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim()), ds.Tables[0].Rows[i]["CLMC"].ToString().Trim()); } return dicResult; } //查询当前尺重表下待我处理、处于同一工作流事务的记录 public static DataSet GetXLXSCLQD(string sJGCZBID, string sJGCZBBBID, string sWPID, string sUserId) { TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL sql = new TSQL(dberp); sql.Add("select XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_XLBZID,XLXSCLQD_DYDJID,"); sql.Add(" RTRIM(XLXSCLQD_XLBZID)||'|'|| XLBZ_XLBZLXMC as XLBZ"); sql.Add(" from XLXSCLQD"); sql.Add(" left join (select XLGGB_XLGGID as XLGGID,MIN(XLGGB_XH) as minXH from XLGGB where 1=1 "); sql.Add(" GROUP BY XLGGB_XLGGID ) tmpXLGGB on XLGGID = REPLACE(XLXSCLQD_XLGGID , '*','×') "); sql.Add(" left join XLBZ on XLBZ_XLBZID=XLXSCLQD_XLBZID"); sql.Add(" where XLXSCLQD_JGCZBID=:pJGCZBID"); sql.Add(" and XLXSCLQD_JGCZBBBID=:pJGCZBBBID"); sql.Add(" and XLXSCLQD_WPID=:pWPID"); sql.Add(" and XLXSCLQD_WFAWAITER like :XLXSCLQD_WFAWAITER "); sql.Add(" order by XLXSCLQD_XLXHID,XLXSCLQD_XLBZID,minXH,XLXSCLQD_XLGGID,XLXSCLQD_DYDJID"); sql.ParamByName("pJGCZBID").Value = sJGCZBID; sql.ParamByName("pJGCZBBBID").Value = sJGCZBBBID; sql.ParamByName("pWPID").Value = sWPID; sql.ParamByName("XLXSCLQD_WFAWAITER").Value = "%," + sUserId + ",%"; return dberp.OpenDataSet(sql); } private void RePLTH() { if (grdGrid.SelectedIndex < 0) { ShowMessage("请选择处理记录!"); return; } string sBJDID = grdGrid.DataKeys[grdGrid.SelectedIndex]["XLXSCLQD_BJDID"].ToString().Trim(); if (sBJDID.Equals("")) { ShowMessage("当前记录不归属任何报价单,无法整单退回!"); return; } //判断流程状态, List lstLCZT = new List(); lstLCZT.Clear(); //判断待处理人 List lstDCLR = new List(); lstDCLR.Clear(); TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL sql = new TSQL(dberp); sql.Clear(); sql.Add("SELECT XLXSCLQD_JGCZBID,XLXSCLQD_JGCZBBBID,XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_XLBZID,XLXSCLQD_DYDJID,XLXSCLQD_WPID,XLXSCLQD_WFAWAITER FROM XLXSCLQD WHERE XLXSCLQD_BJDID =:pBJDID order by XLXSCLQD_XH "); sql.ParamByName("pBJDID").Value = sBJDID; DataSet dsJudge = dberp.OpenDataSet(sql); if (dsJudge.Tables[0].Rows.Count > 0) { for (int i = 0; i < dsJudge.Tables[0].Rows.Count; i++) { if (!lstLCZT.Contains(dsJudge.Tables[0].Rows[i]["XLXSCLQD_WPID"].ToString().Trim()) && !dsJudge.Tables[0].Rows[i]["XLXSCLQD_WPID"].ToString().Trim().Equals("")) { lstLCZT.Add(dsJudge.Tables[0].Rows[i]["XLXSCLQD_WPID"].ToString().Trim()); } if (!lstDCLR.Contains(dsJudge.Tables[0].Rows[i]["XLXSCLQD_WFAWAITER"].ToString().Trim()) && !dsJudge.Tables[0].Rows[i]["XLXSCLQD_WPID"].ToString().Trim().Equals("")) { lstDCLR.Add(dsJudge.Tables[0].Rows[i]["XLXSCLQD_WFAWAITER"].ToString().Trim()); } } } else { ShowMessage("记录不存在,请刷新后再试!"); return; } if (lstLCZT.Count != 1) { ShowMessage("当前记录对应报价单号下记录的流程状态不一致,无法整单退回!"); return; } if (lstLCZT.Contains("ZZZZ") || lstLCZT.Contains("ZZZY")) { ShowMessage("当前记录对应报价单号下记录的流程状态已经结束,不允许整单退回!"); return; } if (lstDCLR.Count != 1) { ShowMessage("当前记录报价单号下的待处理人不一致,无法整单退回!"); return; } if (!lstDCLR[0].Contains(tSession.UserId)) { ShowMessage("非待您处理的记录,无法整单退回!"); return; } Confirm.Register("GO", "即将自动退回当前记录报价单号下的记录,是否继续?"); Confirm.ShowBtnText = TConfirm.cBtnText.Yes_No; if (Confirm.GetValue("GO").Trim().Equals("")) { Confirm.Ask("GO"); return; } else if (Confirm.GetValue("GO").Trim().Equals("N")) { Confirm.Clear(); return; } else if (Confirm.GetValue("GO").Trim().Equals("Y")) { Confirm.Clear(); } string sMsg = ""; string sXLXHID =""; string sXLGGID = ""; string sXLBZID = ""; string sDYDJID = ""; for (int i = 0; i < dsJudge.Tables[0].Rows.Count; i++) { sXLXHID = dsJudge.Tables[0].Rows[i]["XLXSCLQD_XLXHID"].ToString().Trim(); sXLGGID = dsJudge.Tables[0].Rows[i]["XLXSCLQD_XLGGID"].ToString().Trim(); sXLBZID = dsJudge.Tables[0].Rows[i]["XLXSCLQD_XLBZID"].ToString().Trim(); sDYDJID = dsJudge.Tables[0].Rows[i]["XLXSCLQD_DYDJID"].ToString().Trim().Equals("") ? " " : dsJudge.Tables[0].Rows[i]["XLXSCLQD_DYDJID"].ToString().Trim(); Dictionary dicKeyDWCL = new Dictionary();//待我处理的记录关键字 sql.Clear(); sql.Add("select XLXSCLQD_JGCZBID,XLXSCLQD_JGCZBBBID,XLXSCLQD_CPMLID,XLXSCLQD_WFID,XLXSCLQD_WFINST,XLXSCLQD_WPID,XLXSCLQD_JGCZBBBID from XLXSCLQD where XLXSCLQD_XLXHID=:pXLXHID and XLXSCLQD_XLGGID=:pXLGGID and XLXSCLQD_XLBZID=:pXLBZID and XLXSCLQD_DYDJID=:pDYDJID"); sql.ParamByName("pXLXHID").Value = sXLXHID; sql.ParamByName("pXLGGID").Value = sXLGGID; sql.ParamByName("pXLBZID").Value = sXLBZID; sql.ParamByName("pDYDJID").Value = sDYDJID; DataSet ds = dberp.OpenDataSet(sql); if (ds.Tables[0].Rows.Count > 0) { string sWFID = ds.Tables[0].Rows[0]["XLXSCLQD_WFID"].ToString().Trim(); double dWFINST = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["XLXSCLQD_WFINST"].ToString().Trim()); string sWPID = ds.Tables[0].Rows[0]["XLXSCLQD_WPID"].ToString().Trim(); string sJGCZBID = ds.Tables[0].Rows[0]["XLXSCLQD_JGCZBID"].ToString().Trim(); if (sJGCZBID.Equals("")) { continue; } else if (!CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLJGCZBML where XLJGCZBML_JGCZBID='{0}' and XLJGCZBML_CZBLX='A'", sJGCZBID))) { continue; } TWorkflow awf = new TWorkflow(tSession, new System.Web.Caching.Cache()); awf.WFInfo(sWFID, dWFINST, tSession.UserId); //bool isStop = awf.IsLastWFP(sWFID, awf.WPID); //if (isStop) //{ // continue; //} //if (!awf.Awaiter.Contains("," + tSession.UserId + ",")) //{ // continue; //} ///判断是否有权限 bool r = awf.WFRights.HasRight(TWFRight.wfrCanSubmit); if (!r) { string Processor = awf.GetProcessor(); if (Processor != "") { continue; } } CLYLKey tmpCLYLKey = new CLYLKey(); tmpCLYLKey.XLXHID = sXLXHID; tmpCLYLKey.XLGGID = sXLGGID; tmpCLYLKey.XLBZID = sXLBZID; tmpCLYLKey.DYDJID = sDYDJID; tmpCLYLKey.WFID = sWFID; tmpCLYLKey.WFINST = dWFINST; tmpCLYLKey.WPID = sWPID; dicKeyDWCL.Add(dWFINST, tmpCLYLKey); } foreach (double dKey in dicKeyDWCL.Keys) { string sWFID = dicKeyDWCL[dKey].WFID; string sWPID = dicKeyDWCL[dKey].WPID; double dWFINST = dicKeyDWCL[dKey].WFINST; if (sWPID.Equals("ZZZZ") || sWPID.Equals("ZZZY")) continue; TWorkflow wf = new TWorkflow(tSession, new System.Web.Caching.Cache()); wf.Enabled = true; wf.CurUserID = tSession.UserId; wf.UMID = this.UMID; wf.WFInfo(sWFID, dWFINST, tSession.UserId); TWFPList wfpList = new TWFPList(); ArrayList alTaker = new ArrayList(); ArrayList alAgent = new ArrayList(); ArrayList alProcessor = new ArrayList(); wf.WFGetPrevWFP(wf.WFID, wf.WFInst, ref wfpList, ref alTaker, ref alAgent, ref alProcessor); if (wfpList.WFPCount <= 0) //return "上步流程为空,无法退回!"; { sMsg = "上步流程为空,无法退回!"; continue; } string sLastWPID = wfpList.WPIDs(0); ////获取上一步处理事务对应的处理人 //string sLastHandlers = alProcessor[sLastWPID].ToString().Trim(); string aWaiter = ","; foreach (string sId in alProcessor) { aWaiter += sId + ","; } string WFID = wf.WFID; double WFInst = wf.WFInst; wf.WFInfo(WFID, WFInst, tSession.UserId.Trim()); TWFActionParam param = new TWFActionParam(); param.sOpinion = "整单退回"; param.sNextWFID = WFID; param.sNextWPID = sLastWPID.Trim(); param.sNextNotifier = ""; param.sNextAwaiter = aWaiter; param.sWPState = TWorkflow.wpsReturn; param.sWFState = TWorkflow.wfsRunning; //TStrings ss = new TStrings(); //_CurWorkFlow.GetCanHandleUser(ref ss); //string sUser = ""; //if (ss.Count > 0) // sUser = ss[0].ToString(); //if (_CurWorkFlow.WorkflowPassword()) Master_wfBeforeAction(TWFAction.wfaReturn); wf.dbe.BeginTrans(); try { wf.WFReturn(sWFID, dWFINST, tSession.UserId, param); TSQL ssql = new TSQL(wf.dbe); ssql.Clear(); ssql.Text = " update XLXSCLQD" + " set XLXSCLQD_WFID = :XLXSCLQD_WFID, XLXSCLQD_WPID = :XLXSCLQD_WPID, XLXSCLQD_WFAWAITER= :XLXSCLQD_WFAWAITER," + "\r\n" + " XLXSCLQD_WFHANDLER = :XLXSCLQD_WFHANDLER,XLXSCLQD_WFINST = :XLXSCLQD_WFINST,XLXSCLQD_ACTNAME = :XLXSCLQD_ACTNAME " + "\r\n" + " where XLXSCLQD_XLXHID=:pXLXHID and XLXSCLQD_XLGGID=:pXLGGID and XLXSCLQD_XLBZID=:pXLBZID and XLXSCLQD_DYDJID=:pDYDJID"; ssql.ParamByName("XLXSCLQD_WFID").Value = wf.WFID; ssql.ParamByName("XLXSCLQD_WPID").Value = wf.WPID; ssql.ParamByName("XLXSCLQD_WFAWAITER").Value = wf.Awaiter; ssql.ParamByName("XLXSCLQD_WFHANDLER").Value = wf.Handler; ssql.ParamByName("XLXSCLQD_WFINST").Value = wf.WFInst; ssql.ParamByName("XLXSCLQD_ACTNAME").Value = wf.GetWFActionName(TWFAction.wfaReturn); ssql.ParamByName("pXLXHID").Value = dicKeyDWCL[dKey].XLXHID; ssql.ParamByName("pXLGGID").Value = dicKeyDWCL[dKey].XLGGID; ssql.ParamByName("pXLBZID").Value = dicKeyDWCL[dKey].XLBZID; ssql.ParamByName("pDYDJID").Value = dicKeyDWCL[dKey].DYDJID; wf.dbe.ExecSQL(ssql); wf.dbe.CommitTrans(); } catch (Exception ex) { wf.dbe.RollbackTrans(); ShowMessage(ex.Message); return; } } } if (!sMsg.Equals("")) ShowMessage(sMsg); else { ShowMessage("整单退回--完成!"); btnRefresh_Click(null, null); } } private bool IsCZBLXA(string sJGCZBID) { if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLJGCZBML where XLJGCZBML_JGCZBID='{0}' and XLJGCZBML_CZBLX='A'", sJGCZBID))) { return false; } else { return true; } } protected void OpenBB(Dictionary dicCLYLLM, DataSet dsCLQD, string sJGCZBID, string sJGCZBBBID, string sWPID, string sUserId, string sCZBJLDW) { string sWizard = ""; string sBBYSJS = ""; string sReportizard = ""; string sBBMB = ""; int iColumnCount = dicCLYLLM.Count + 4; //导入前的缺省样式 string sXML = "" + "" + "" + "" + ""; if (dsCLQD.Tables[0].Rows.Count > 0) { //sXML = sXML + ""; } sXML = sXML + ""; byte[] b4 = new byte[0]; b4 = Encoding.Default.GetBytes(sXML); byte[] zipbuf4 = ZlibCompress.CompressBytes(b4); sBBMB = Convert.ToBase64String(zipbuf4); try { string sRun = string.Format("document.all.ActiveXBBForBBYS.OperationType = 'DesignReport';document.all.ActiveXBBForBBYS.EncodedReport = \'{0}\';", sBBMB); sBBYSJS = @" "; TPageParams tpp = new TPageParams(); tpp.Title = "复制粘贴尺重表用量"; tpp.UrlPath = "../N_MODEL/Dialog/BBYS_YSSJ.aspx"; tpp.AddString("BBLink", "Y"); tpp.AddExtString("sRun", sRun.Trim()); tpp.AddExtString("Save", sBBYSJS); tpp.AddExtString("Wizard", sWizard); tpp.AddExtString("ReportWizard", sReportizard); tpp.AddString("FormTitle", "报表样式"); OpenFuncModuleDialog(100210034, tpp); } catch { ShowMessage("打开报表失败!"); } } public void ReadBBYS(string sRep, string sColumnCount, string sJGCZBID, string sJGCZBBBID, string sWPID, string sUserId, string sCZBJLDW) { byte[] b = Convert.FromBase64String(sRep); string sBBMB = ""; string sRow = "";//sRow变量:记录元组的行号,用于在换行时处理电压等级、计量单位、报价数量为空时赋值为上一条数据的问题 string sValue = ""; string sXLXHID = ""; string sXLGGID = ""; string sDYDJ = ""; string sST = ""; Dictionary dicSL = new Dictionary(); for (int t = 1; t <= 80; t++) { dicSL.Add("SL" + t.ToString().PadLeft(2, '0'), 0.0); } double fHSBL = 1;//换算比例 if (XLBJDUtils.GetDefaultBJU003(GetOption("BJU003")).ToUpper().Equals("KM") && sCZBJLDW.Split('/')[1].ToUpper().Equals("M")) { fHSBL = 1000; } else if (XLBJDUtils.GetDefaultBJU003(GetOption("BJU003")).ToUpper().Equals("M") && sCZBJLDW.Split('/')[1].ToUpper().Equals("KM")) { fHSBL = 0.001; } byte[] zipbuf = new byte[0]; zipbuf = ZlibCompress.DecompressBytes(b); sBBMB = System.Text.Encoding.Default.GetString(zipbuf, 0, zipbuf.Length); if (!string.IsNullOrEmpty(sBBMB.Trim())) { Dictionary dicDRMXBZ = new Dictionary(); dicDRMXBZ.Clear(); TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL sSQL = new TSQL(dberp); sSQL.Clear(); sSQL.Add("select XLBZ_XLBZID,XLBZ_XLBZLXMC from XLBZ where 1 = 1 "); DataSet dsXLBZ = dberp.OpenDataSet(sSQL); if (dsXLBZ.Tables[0].Rows.Count > 0) { for (int i = 0; i < dsXLBZ.Tables[0].Rows.Count; i++) { dicDRMXBZ.Add(dsXLBZ.Tables[0].Rows[i]["XLBZ_XLBZID"].ToString().Trim(), dsXLBZ.Tables[0].Rows[i]["XLBZ_XLBZLXMC"].ToString().Trim()); } } XmlDocument xml = new XmlDocument(); xml.LoadXml(sBBMB); XmlNode XmlRoot = xml.SelectSingleNode("Report"); XmlNodeList XmlRootList = XmlRoot.SelectNodes("Cells"); try { dberp.BeginTrans(); sSQL.Clear(); sSQL.Add("update XLXSCLQD set "); sSQL.Add(" XLXSCLQD_SL01=:SL01,XLXSCLQD_SL02=:SL02,XLXSCLQD_SL03=:SL03,XLXSCLQD_SL04=:SL04,XLXSCLQD_SL05=:SL05,XLXSCLQD_SL06=:SL06,XLXSCLQD_SL07=:SL07,XLXSCLQD_SL08=:SL08,XLXSCLQD_SL09=:SL09,XLXSCLQD_SL10=:SL10,"); sSQL.Add(" XLXSCLQD_SL11=:SL11,XLXSCLQD_SL12=:SL12,XLXSCLQD_SL13=:SL13,XLXSCLQD_SL14=:SL14,XLXSCLQD_SL15=:SL15,XLXSCLQD_SL16=:SL16,XLXSCLQD_SL17=:SL17,XLXSCLQD_SL18=:SL18,XLXSCLQD_SL19=:SL19,XLXSCLQD_SL20=:SL20,"); sSQL.Add(" XLXSCLQD_SL21=:SL21,XLXSCLQD_SL22=:SL22,XLXSCLQD_SL23=:SL23,XLXSCLQD_SL24=:SL24,XLXSCLQD_SL25=:SL25,XLXSCLQD_SL26=:SL26,XLXSCLQD_SL27=:SL27,XLXSCLQD_SL28=:SL28,XLXSCLQD_SL29=:SL29,XLXSCLQD_SL30=:SL30,"); sSQL.Add(" XLXSCLQD_SL31=:SL31,XLXSCLQD_SL32=:SL32,XLXSCLQD_SL33=:SL33,XLXSCLQD_SL34=:SL34,XLXSCLQD_SL35=:SL35,XLXSCLQD_SL36=:SL36,XLXSCLQD_SL37=:SL37,XLXSCLQD_SL38=:SL38,XLXSCLQD_SL39=:SL39,XLXSCLQD_SL40=:SL40,"); sSQL.Add(" XLXSCLQD_SL41=:SL41,XLXSCLQD_SL42=:SL42,XLXSCLQD_SL43=:SL43,XLXSCLQD_SL44=:SL44,XLXSCLQD_SL45=:SL45,XLXSCLQD_SL46=:SL46,XLXSCLQD_SL47=:SL47,XLXSCLQD_SL48=:SL48,XLXSCLQD_SL49=:SL49,XLXSCLQD_SL50=:SL50,"); sSQL.Add(" XLXSCLQD_SL51=:SL51,XLXSCLQD_SL52=:SL52,XLXSCLQD_SL53=:SL53,XLXSCLQD_SL54=:SL54,XLXSCLQD_SL55=:SL55,XLXSCLQD_SL56=:SL56,XLXSCLQD_SL57=:SL57,XLXSCLQD_SL58=:SL58,XLXSCLQD_SL59=:SL59,XLXSCLQD_SL60=:SL60,"); sSQL.Add(" XLXSCLQD_SL61=:SL61,XLXSCLQD_SL62=:SL62,XLXSCLQD_SL63=:SL63,XLXSCLQD_SL64=:SL64,XLXSCLQD_SL65=:SL65,XLXSCLQD_SL66=:SL66,XLXSCLQD_SL67=:SL67,XLXSCLQD_SL68=:SL68,XLXSCLQD_SL69=:SL69,XLXSCLQD_SL70=:SL70,"); sSQL.Add(" XLXSCLQD_SL71=:SL71,XLXSCLQD_SL72=:SL72,XLXSCLQD_SL73=:SL73,XLXSCLQD_SL74=:SL74,XLXSCLQD_SL75=:SL75,XLXSCLQD_SL76=:SL76,XLXSCLQD_SL77=:SL77,XLXSCLQD_SL78=:SL78,XLXSCLQD_SL79=:SL79,XLXSCLQD_SL80=:SL80,"); sSQL.Add(" XLXSCLQD_WHR=:XLXSCLQD_WHR,XLXSCLQD_WHRID=:XLXSCLQD_WHRID,XLXSCLQD_WHSJ=:XLXSCLQD_WHSJ"); sSQL.Add(" where XLXSCLQD_XLXHID=:XLXSCLQD_XLXHID"); sSQL.Add(" and XLXSCLQD_XLGGID=:XLXSCLQD_XLGGID"); sSQL.Add(" and XLXSCLQD_XLBZID=:XLXSCLQD_XLBZID"); sSQL.Add(" and XLXSCLQD_DYDJID=:XLXSCLQD_DYDJID"); foreach (XmlNode XmlKey in XmlRootList) { for (int i = 0; i < XmlKey.ChildNodes.Count; i++) { XmlNode XmlKeyC = XmlKey.ChildNodes[i]; for (int j = 0; j < XmlKeyC.ChildNodes.Count; j++) { if (float.Parse(XmlKeyC.ChildNodes[j].Attributes["Row"].Value.Trim()) >= 2) { //判断是否换行了 if (!sRow.Equals(XmlKeyC.ChildNodes[j].Attributes["Row"].Value.Trim())) { #region 换行时,插入前一行数据 if (!sRow.Equals("")) { if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLXSCLQD where XLXSCLQD_JGCZBID='{0}' and XLXSCLQD_JGCZBBBID='{1}' and XLXSCLQD_WPID='{2}'" + " and XLXSCLQD_WFAWAITER like '{3}' and XLXSCLQD_XLXHID='{4}' and XLXSCLQD_XLGGID='{5}' and XLXSCLQD_XLBZID='{6}' and XLXSCLQD_DYDJID='{7}'", sJGCZBID, sJGCZBBBID, sWPID, "%," + sUserId + ",%", sXLXHID, sXLGGID, sST, sDYDJ))) { for (int t = 1; t <= 80; t++) { sSQL.ParamByName("SL" + t.ToString().PadLeft(2, '0')).Value = dicSL["SL" + t.ToString().PadLeft(2, '0')]; } sSQL.ParamByName("XLXSCLQD_WHR").Value = tSession.UserName; sSQL.ParamByName("XLXSCLQD_WHRID").Value = tSession.UserId; sSQL.ParamByName("XLXSCLQD_WHSJ").Value = DateTime.Now; dberp.ExecSQL(sSQL); //清空dicSL dicSL.Clear(); for (int t = 1; t <= 80; t++) { dicSL.Add("SL" + t.ToString().PadLeft(2, '0'), 0.0); } } } #endregion sRow = XmlKeyC.ChildNodes[j].Attributes["Row"].Value.Trim(); } sValue = XmlKeyC.ChildNodes[j].Attributes["Value"].Value.Trim(); if (XmlKeyC.ChildNodes[j].Attributes["Column"].Value.Trim() == "1") { sSQL.ParamByName("XLXSCLQD_XLXHID").Value = sValue; sXLXHID = sValue; } if (XmlKeyC.ChildNodes[j].Attributes["Column"].Value.Trim() == "2") { sSQL.ParamByName("XLXSCLQD_XLGGID").Value = sValue; sXLGGID = sValue; } if (XmlKeyC.ChildNodes[j].Attributes["Column"].Value.Trim() == "3") { string sXLXBZID = XLBJDUtils.GetBZXLZBZID(sValue, "", dicDRMXBZ); sSQL.ParamByName("XLXSCLQD_XLBZID").Value = sXLXBZID; sST = sXLXBZID; } if (XmlKeyC.ChildNodes[j].Attributes["Column"].Value.Trim() == "4") { sValue = sValue.Replace('K', 'k').Replace('v', 'V'); sSQL.ParamByName("XLXSCLQD_DYDJID").Value = sValue; sDYDJ = sValue; } for (int k = 6; k <= 85; k++) { if (XmlKeyC.ChildNodes[j].Attributes["Column"].Value.Trim() == k.ToString()) dicSL["SL" + Convert.ToString(k - 5).PadLeft(2, '0')] = CMISproConvert.StrToFloat(sValue, 0) * fHSBL; } } } } } #region 插入最后一行 if (!sRow.Equals("")) { if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLXSCLQD where XLXSCLQD_JGCZBID='{0}' and XLXSCLQD_JGCZBBBID='{1}' and XLXSCLQD_WPID='{2}'" + " and XLXSCLQD_WFAWAITER like '{3}' and XLXSCLQD_XLXHID='{4}' and XLXSCLQD_XLGGID='{5}' and XLXSCLQD_XLBZID='{6}' and XLXSCLQD_DYDJID='{7}'", sJGCZBID, sJGCZBBBID, sWPID, "%," + sUserId + ",%", sXLXHID, sXLGGID, sST, sDYDJ))) { for (int t = 1; t <= 80; t++) { sSQL.ParamByName("SL" + t.ToString().PadLeft(2, '0')).Value = dicSL["SL" + t.ToString().PadLeft(2, '0')]; } sSQL.ParamByName("XLXSCLQD_WHR").Value = tSession.UserName; sSQL.ParamByName("XLXSCLQD_WHRID").Value = tSession.UserId; sSQL.ParamByName("XLXSCLQD_WHSJ").Value = DateTime.Now; dberp.ExecSQL(sSQL); //清空dicSL dicSL.Clear(); for (int t = 1; t <= 80; t++) { dicSL.Add("SL" + t.ToString().PadLeft(2, '0'), 0.0); } } } #endregion dberp.CommitTrans(); } catch (Exception ex) { dberp.RollbackTrans(); ShowMessage(ex.Message); } } } //获取报价申请对应销售员用户 private string GetXSYYH(string sBJDID) { string sRstr = ""; TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL sql = new TSQL(dberp); sql.Add(string.Format("select XSY_GH from XLXSBJD left join XSY on XSY_TXY = XLXSBJD_TXY where XLXSBJD_BJDID = '{0}' ", sBJDID)); DataSet ds = dberp.OpenDataSet(sql); if (ds.Tables[0].Rows.Count > 0) { sRstr = ds.Tables[0].Rows[0]["XSY_GH"].ToString().Trim(); } return sRstr; } //是否有100232002模块新建权限 private bool CheckYJXJ(string sGH) { UserRight UR = OpRightUtils.GetUserRight(sGH, 100232002); return (DSActiveModule.IsActiveModule(100232002) && UR.Insert); } //材料物料校验,返回""则校验通过 private string GetCLWLJY(string sXLXHID, string sXLGGID, string sXLBZID,string sXLBZMC, string sDYDJID) { string Rstr = "";//返回的字符串 string sCLXX = "【" + sXLXHID + "," + sXLGGID + "," + sXLBZID + "|" + sXLBZMC + "," + sDYDJID + "】"; TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL sql = new TSQL(dberp); sql.Add("select XLXSCLQD_JGCZBID,XLXSCLQD_JGCZBBBID,XLXSCLQD_WPID,XLXSCLQD_WFID,"); for (int i = 1; i < 80; i++) { sql.Add(string.Format("XLXSCLQD_SL{0},XLXSCLQDWL_WLID{0},", i.ToString().PadLeft(2, '0'))); } sql.Add(" XLXSCLQD_SL80,XLXSCLQDWL_WLID80 "); sql.Add(" from XLXSCLQD "); sql.Add(" left join XLXSCLQDWL on XLXSCLQDWL_JGCZBID=XLXSCLQD_JGCZBID and XLXSCLQDWL_JGCZBBBID=XLXSCLQD_JGCZBBBID and XLXSCLQDWL_JGCZBXH=XLXSCLQD_JGCZBXH and XLXSCLQDWL_DRHH=XLXSCLQD_DRHH"); sql.Add(" where XLXSCLQD_XLXHID=:pXLXHID and XLXSCLQD_XLGGID=:pXLGGID and XLXSCLQD_XLBZID=:pXLBZID and XLXSCLQD_DYDJID=:pDYDJID"); sql.ParamByName("pXLXHID").Value = sXLXHID; sql.ParamByName("pXLGGID").Value = sXLGGID; sql.ParamByName("pXLBZID").Value = sXLBZID; sql.ParamByName("pDYDJID").Value = sDYDJID; DataSet ds = dberp.OpenDataSet(sql); if (ds.Tables[0].Rows.Count > 0) { //校验:报价材料需要细分至物料而还没细分的 sql.Clear(); sql.Add("select XLJGCZBLM_CLQDL,XLXSBJCL_BJCLID,XLXSBJCL_BJCLMC"); sql.Add(" from XLJGCZBLM"); sql.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLJGCZBLM_BJCLID"); sql.Add(" where XLJGCZBLM_JGCZBID=:pJGCZBID and XLJGCZBLM_JGCZBBBID=:pJGCZBBBID and XLXSBJCL_BJHQ='2'"); sql.Add(" order by XLJGCZBLM_CLQDL"); sql.ParamByName("pJGCZBID").Value = ds.Tables[0].Rows[0]["XLXSCLQD_JGCZBID"].ToString().Trim(); sql.ParamByName("pJGCZBBBID").Value = ds.Tables[0].Rows[0]["XLXSCLQD_JGCZBBBID"].ToString().Trim(); DataSet dsLM = dberp.OpenDataSet(sql); for (int i = 0; i < dsLM.Tables[0].Rows.Count; i++) { string sCLQDL = dsLM.Tables[0].Rows[i]["XLJGCZBLM_CLQDL"].ToString().Trim(); string tmpXH = sCLQDL.Replace("第", "").Replace("列", ""); double tmpSL = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["XLXSCLQD_SL" + tmpXH].ToString()); string tmpWLID = ds.Tables[0].Rows[0]["XLXSCLQDWL_WLID" + tmpXH].ToString().Trim(); if (tmpSL > 0 && tmpWLID.Equals("")) { Rstr = sCLXX; break; } } } return Rstr; } #endregion #region 控件事件 protected void btnCLYL_MenuItemClick(object sender, string Value) { if (grdGrid.SelectedIndex < 0) { ShowMessage("请选择处理记录!"); return; } string sXLXHID = grdGrid.DataKeys[grdGrid.SelectedIndex]["XLXSCLQD_XLXHID"].ToString().Trim(); string sXLGGID = grdGrid.DataKeys[grdGrid.SelectedIndex]["XLXSCLQD_XLGGID"].ToString().Trim(); string sXLBZID = grdGrid.DataKeys[grdGrid.SelectedIndex]["XLXSCLQD_XLBZID"].ToString().Trim(); string sXLBZ = grdGrid.DataKeys[grdGrid.SelectedIndex]["XLBZ"].ToString().Trim(); string sDYDJID = grdGrid.DataKeys[grdGrid.SelectedIndex]["XLXSCLQD_DYDJID"].ToString().Trim().Equals("") ? " " : grdGrid.DataKeys[grdGrid.SelectedIndex]["XLXSCLQD_DYDJID"].ToString().Trim(); string sCZBJLDW = "Kg/Km"; string CanE = "N"; string sGCID = ""; string sCPWLID = ""; string sJGCZBID = ""; string sJGCZBBBID = ""; string sJGCZBMC = ""; string sWPID = ""; string sWFID = ""; TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL sql = new TSQL(dberp); sql.Add("select XLXSCLQD_WFAWAITER,XLXSCLQD_GCID,XLXSCLQD_WLID,XLXSCLQD_JGCZBID,XLXSCLQD_JGCZBBBID,XLJGCZBML_CZBJLDW,XLJGCZBML_JGCZBMC,XLXSCLQD_WPID,XLXSCLQD_WFID "); sql.Add(" from XLXSCLQD"); sql.Add(" left join XLJGCZBML on XLJGCZBML_JGCZBID=XLXSCLQD_JGCZBID"); sql.Add(" where XLXSCLQD_XLXHID=:pXLXHID and XLXSCLQD_XLGGID=:pXLGGID and XLXSCLQD_XLBZID=:pXLBZID and XLXSCLQD_DYDJID=:pDYDJID "); sql.ParamByName("pXLXHID").Value = sXLXHID; sql.ParamByName("pXLGGID").Value = sXLGGID; sql.ParamByName("pXLBZID").Value = sXLBZID; sql.ParamByName("pDYDJID").Value = sDYDJID; DataSet ds = dberp.OpenDataSet(sql); if (ds.Tables[0].Rows.Count > 0) { if (ds.Tables[0].Rows[0]["XLXSCLQD_WFAWAITER"].ToString().Trim().Contains("," + tSession.UserId + ",")) { CanE = "Y"; } sGCID = ds.Tables[0].Rows[0]["XLXSCLQD_GCID"].ToString().Trim(); sCPWLID = ds.Tables[0].Rows[0]["XLXSCLQD_WLID"].ToString().Trim(); sJGCZBID = ds.Tables[0].Rows[0]["XLXSCLQD_JGCZBID"].ToString().Trim(); sJGCZBBBID = ds.Tables[0].Rows[0]["XLXSCLQD_JGCZBBBID"].ToString().Trim(); sJGCZBMC = ds.Tables[0].Rows[0]["XLJGCZBML_JGCZBMC"].ToString().Trim(); sWPID = ds.Tables[0].Rows[0]["XLXSCLQD_WPID"].ToString().Trim(); sWFID = ds.Tables[0].Rows[0]["XLXSCLQD_WFID"].ToString().Trim(); if (ds.Tables[0].Rows[0]["XLJGCZBML_CZBJLDW"].ToString().Trim().Equals("1")) { sCZBJLDW = "Kg/Km"; } else if (ds.Tables[0].Rows[0]["XLJGCZBML_CZBJLDW"].ToString().Trim().Equals("2")) { sCZBJLDW = "Kg/m"; } } else { ShowMessage("当前记录已不存在,请刷新后重试!"); return; } switch (Value) { case "ZJLR"://直接录入材料用量 TPageParams pageParams = new TPageParams(); pageParams.UrlPath = "CLYL_CLYLList.aspx"; pageParams.AddString("XLXHID", sXLXHID); pageParams.AddString("XLGGID", sXLGGID); pageParams.AddString("XLBZID", sXLBZID); pageParams.AddString("DYDJID", sDYDJID); pageParams.AddString("XLBZ", sXLBZ); pageParams.AddString("CZBJLDW", sCZBJLDW); pageParams.AddString("CanE", CanE); pageParams.AddString("GCID", sGCID); pageParams.AddString("CPWLID", sCPWLID); pageParams.AddString("JGCZBID", sJGCZBID); pageParams.AddString("JGCZBBBID", sJGCZBBBID); pageParams.AddString("btnRefreshCID", btnRefresh.ClientID); OpenDialog(pageParams); break; case "PLZJLR"://批量直接录入材料用量 Dictionary dicCLYLLM1 = GetJGCZBCLYLLM(sJGCZBID, sJGCZBBBID); if (dicCLYLLM1.Count > 0) { //查询当前尺重表下待我处理、处于同一工作流事务的记录 DataSet dsCLQD = GetXLXSCLQD(sJGCZBID, sJGCZBBBID, sWPID, tSession.UserId); if (dsCLQD.Tables[0].Rows.Count > 0) { TPageParams param = new TPageParams(); param.UrlPath = "CLYL_FZZTCLYLList.aspx"; param.AddString("JGCZBID", sJGCZBID); param.AddString("JGCZBBBID", sJGCZBBBID); param.AddString("CZBJLDW", sCZBJLDW); param.AddString("WPID", sWPID); param.AddString("USERID", tSession.UserId); param.AddString("btnRefreshCID", btnRefresh.ClientID); OpenDialog(param); } else ShowMessage(string.Format("未查到符合条件的待我处理记录:尺重表为【{0}】、流程状态为【{1}】", sJGCZBID + "|" + sJGCZBMC, sWPID + "|" + this._curWorkFlow.GetWPName(sWFID, sWPID))); } else { ShowMessage(string.Format("尺重表【{0}】尚未设置材料用量栏目", sJGCZBID + "|" + sJGCZBMC)); } break; case "FZZT"://复制粘贴尺重表用量 Dictionary dicCLYLLM = GetJGCZBCLYLLM(sJGCZBID, sJGCZBBBID); if (dicCLYLLM.Count > 0) { //查询当前尺重表下待我处理、处于同一工作流事务的记录 DataSet dsCLQD = GetXLXSCLQD(sJGCZBID, sJGCZBBBID, sWPID, tSession.UserId); if (dsCLQD.Tables[0].Rows.Count > 0) OpenBB(dicCLYLLM, dsCLQD, sJGCZBID, sJGCZBBBID, sWPID, tSession.UserId, sCZBJLDW); else ShowMessage(string.Format("未查到符合条件的待我处理记录:尺重表为【{0}】、流程状态为【{1}】", sJGCZBID + "|" + sJGCZBMC, sWPID + "|" + this._curWorkFlow.GetWPName(sWFID, sWPID))); } else { ShowMessage(string.Format("尺重表【{0}】尚未设置材料用量栏目", sJGCZBID + "|" + sJGCZBMC)); } break; } } protected void btnRefresh_Click(object sender, EventArgs e) { moduleGV_PageIndexChanging(null, null); } protected void btnDR_OnClick(object sender, EventArgs e) { base.InitEntityByCondition(); TPageParams tpp = new TPageParams(); tpp.UrlPath = "CLYL_DRInfo.aspx"; tpp.CallAction = TPageCallAction.pcaBrowse; tpp.AddString("JGCZBID", CurQueryEntity.FieldByName("JGCZBID").Value.Trim().Split('|')[0]); tpp.AddString("JGCZBBBID", CurQueryEntity.FieldByName("JGCZBBBID").Value.Trim()); OpenDialogClickBtn(tpp, btnRefresh.ClientID); } protected void btnDCWLYL_MenuItemClick(object sender, string Value) { switch (Value) { case "BROWSE": TPageParams tpp = new TPageParams(); tpp.UrlPath = "CLYL_DRYLList.aspx"; tpp.AddString("CanE", "N"); if (grdGrid.SelectedIndex >= 0) { tpp.AddString("FromPage", "CLYLList"); tpp.AddString("GCID", grdGrid.DataKeys[grdGrid.SelectedIndex]["XLXSCLQD_GCID"].ToString().Trim()); tpp.AddString("CPWLID", grdGrid.DataKeys[grdGrid.SelectedIndex]["XLXSCLQD_WLID"].ToString().Trim()); } OpenDialog(tpp); break; case "EDIT": TPageParams tpp2 = new TPageParams(); tpp2.UrlPath = "CLYL_DRYLList.aspx"; tpp2.AddString("CanE", "Y"); if (grdGrid.SelectedIndex >= 0) { tpp2.AddString("FromPage", "CLYLList"); tpp2.AddString("GCID", grdGrid.DataKeys[grdGrid.SelectedIndex]["XLXSCLQD_GCID"].ToString().Trim()); tpp2.AddString("CPWLID", grdGrid.DataKeys[grdGrid.SelectedIndex]["XLXSCLQD_WLID"].ToString().Trim()); } OpenDialogClickBtn(tpp2, btnRefresh.ClientID); break; case "INSERT": TPageParams pageParams = new TPageParams(); pageParams.UrlPath = "CLYL_DRYLInfo.aspx"; OpenDialogClickBtn(pageParams, btnRefresh.ClientID); break; } } protected void btnJSCLZL_OnClick(object sender, EventArgs e) { base.InitEntityByCondition(); if (string.IsNullOrEmpty(CurQueryEntity.FieldByName("JGCZBID").Value.Trim())) { ShowMessage("请先选择结构尺重表查询待计算数据!"); return; } Confirm.Register("IsQD", "将重新计算当前结构尺重表下的材料重量,是否继续?"); Confirm.ShowBtnText = TConfirm.cBtnText.Yes_No; if (Confirm.GetValue("IsQD").Trim().Equals("")) { Confirm.Ask("IsQD"); return; } else if (Confirm.GetValue("IsQD").Trim().Equals("N")) { //表示进行了提示并选择了取消,直接返回或其他处理 Confirm.Clear(); return; } else if (Confirm.GetValue("IsQD").Trim().Equals("Y")) { //表示进行了提示并选择了确认 Confirm.Clear(); } TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL sql = new TSQL(dberp); CLQDList.UpdatCLZL(dberp, sql, CurQueryEntity.FieldByName("JGCZBID").Value.Trim().Split('|')[0], CurQueryEntity.FieldByName("JGCZBBBID").Value.Trim()); ShowMessage("材料重量计算完成!"); moduleGV_PageIndexChanging(null, null); } //整单提交 protected void btnPLTJ_OnClick(object sender, EventArgs e) { if (grdGrid.SelectedIndex < 0) { ShowMessage("请选择处理记录!"); return; } string sBJDID = grdGrid.DataKeys[grdGrid.SelectedIndex]["XLXSCLQD_BJDID"].ToString().Trim(); if (sBJDID.Equals("")) { ShowMessage("当前记录不归属任何报价单,无法整单提交!"); return; } //判断流程状态, List lstLCZT = new List(); lstLCZT.Clear(); //先行判断下一步工作流WPID TWorkflow prewf = new TWorkflow(tSession, new System.Web.Caching.Cache()); string spreNextWPID = string.Empty; //判断待处理人 List lstDCLR = new List(); lstDCLR.Clear(); //材料信息 string sCLXX_A = ""; string sCLXX_B = ""; string sCLXX_C = ""; int flag_A = 0; int flag_B = 0; int flag_C = 0; //0 -正常 1 -未维护尺重表 2 -存在非A类 TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL sql = new TSQL(dberp); sql.Clear(); sql.Add("SELECT XLXSCLQD_JGCZBID,XLXSCLQD_JGCZBBBID,XLXSCLQD_XLXHID,XLXSCLQD_XLGGID,XLXSCLQD_XLBZID,XLBZ_XLBZLXMC,XLXSCLQD_DYDJID,XLXSCLQD_WFID,XLXSCLQD_WPID,XLXSCLQD_WFAWAITER FROM XLXSCLQD "); sql.Add("LEFT JOIN XLBZ on XLBZ_XLBZID = XLXSCLQD_XLBZID WHERE XLXSCLQD_BJDID =:pBJDID order by XLXSCLQD_XH "); sql.ParamByName("pBJDID").Value = sBJDID; DataSet dsJudge = dberp.OpenDataSet(sql); if (dsJudge.Tables[0].Rows.Count > 0) { for (int i = 0; i < dsJudge.Tables[0].Rows.Count; i++) { if (!lstLCZT.Contains(dsJudge.Tables[0].Rows[i]["XLXSCLQD_WPID"].ToString().Trim()) && !dsJudge.Tables[0].Rows[i]["XLXSCLQD_WPID"].ToString().Trim().Equals("")) { lstLCZT.Add(dsJudge.Tables[0].Rows[i]["XLXSCLQD_WPID"].ToString().Trim()); } if (!lstDCLR.Contains(dsJudge.Tables[0].Rows[i]["XLXSCLQD_WFAWAITER"].ToString().Trim()) && !dsJudge.Tables[0].Rows[i]["XLXSCLQD_WPID"].ToString().Trim().Equals("")) { lstDCLR.Add(dsJudge.Tables[0].Rows[i]["XLXSCLQD_WFAWAITER"].ToString().Trim()); } if (dsJudge.Tables[0].Rows[i]["XLXSCLQD_JGCZBID"].ToString().Trim().Equals("")) { flag_A = 1; sCLXX_A = "【" + dsJudge.Tables[0].Rows[i]["XLXSCLQD_XLXHID"].ToString().Trim() + "," + dsJudge.Tables[0].Rows[i]["XLXSCLQD_XLGGID"].ToString().Trim() + "," + dsJudge.Tables[0].Rows[i]["XLXSCLQD_XLBZID"].ToString().Trim() + "|" + dsJudge.Tables[0].Rows[i]["XLBZ_XLBZLXMC"].ToString().Trim() + "," + dsJudge.Tables[0].Rows[i]["XLXSCLQD_DYDJID"].ToString().Trim() + "】"; } if (IsCZBLXA(dsJudge.Tables[0].Rows[i]["XLXSCLQD_JGCZBID"].ToString().Trim())) { flag_B = 1; sCLXX_B = "【" + dsJudge.Tables[0].Rows[i]["XLXSCLQD_XLXHID"].ToString().Trim() + "," + dsJudge.Tables[0].Rows[i]["XLXSCLQD_XLGGID"].ToString().Trim() + "," + dsJudge.Tables[0].Rows[i]["XLXSCLQD_XLBZID"].ToString().Trim() + "|" + dsJudge.Tables[0].Rows[i]["XLBZ_XLBZLXMC"].ToString().Trim() + "," + dsJudge.Tables[0].Rows[i]["XLXSCLQD_DYDJID"].ToString().Trim() + "】"; } string sCLWLJY = GetCLWLJY(dsJudge.Tables[0].Rows[i]["XLXSCLQD_XLXHID"].ToString().Trim(), dsJudge.Tables[0].Rows[i]["XLXSCLQD_XLGGID"].ToString().Trim(), dsJudge.Tables[0].Rows[i]["XLXSCLQD_XLBZID"].ToString().Trim(), dsJudge.Tables[0].Rows[i]["XLBZ_XLBZLXMC"].ToString().Trim(), dsJudge.Tables[0].Rows[i]["XLXSCLQD_DYDJID"].ToString().Trim().Equals("") ? " " : dsJudge.Tables[0].Rows[i]["XLXSCLQD_DYDJID"].ToString().Trim()); if (!sCLWLJY.Equals("")) { flag_C = 1; if (!sCLXX_C.Equals("")) sCLXX_C += "\r\n"; sCLXX_C += sCLWLJY; } } } else { ShowMessage("记录不存在,请刷新后再试!"); return; } if (lstLCZT.Count != 1) { ShowMessage("当前记录对应报价单号下记录的流程状态不一致,无法整单提交!"); return; } else { TStrings wfpName = new TStrings(); wfpName.Text = prewf.WFGetNextWFP(dsJudge.Tables[0].Rows[0]["XLXSCLQD_WFID"].ToString().Trim(), dsJudge.Tables[0].Rows[0]["XLXSCLQD_WPID"].ToString().Trim()); if (wfpName.Count > 1) { spreNextWPID = wfpName.Names(1).Trim(); } } if (lstLCZT.Contains("ZZZZ") || lstLCZT.Contains("ZZZY")) { ShowMessage("当前记录对应报价单号下记录的流程状态已经结束,无法整单提交!"); return; } if (lstDCLR.Count != 1) { ShowMessage("当前记录对应报价单号下记录的待处理人不一致,无法整单提交!"); return; } if (!lstDCLR[0].Contains(tSession.UserId)) { ShowMessage("非待您处理的记录,无法整单提交!"); return; } if (1 == flag_A) { ShowMessage("当前记录对应报价单号下记录" + sCLXX_A + "的尺重表存在空值,无法整单提交!"); return; } //尺重表类型 if (1 == flag_B) { ShowMessage("当前记录对应报价单号下记录" + sCLXX_B + "的尺重表类型非全部“A|材料用量(直接维护)”,无法整单提交!"); return; } //材料物料 if (1 == flag_C) { ShowMessage("当前记录对应报价单号下已维护了材料用量的报价产品未指定对应的材料物料,无法整单提交!\r\n" + sCLXX_C); return; } string sConfirmMessage = "";//确认信息 sConfirmMessage = "即将自动提交当前记录对应报价单号下的材料用量记录,是否继续?"; Confirm.Register("GO", sConfirmMessage); Confirm.ShowBtnText = TConfirm.cBtnText.Yes_No; if (Confirm.GetValue("GO").Trim().Equals("")) { Confirm.Ask("GO"); return; } else if (Confirm.GetValue("GO").Trim().Equals("N")) { Confirm.Clear(); return; } else if (Confirm.GetValue("GO").Trim().Equals("Y")) { Confirm.Clear(); } string sMsg = ""; for (int i = 0; i < dsJudge.Tables[0].Rows.Count; i++) { string sXLXHID = dsJudge.Tables[0].Rows[i]["XLXSCLQD_XLXHID"].ToString().Trim(); string sXLGGID = dsJudge.Tables[0].Rows[i]["XLXSCLQD_XLGGID"].ToString().Trim(); string sXLBZID = dsJudge.Tables[0].Rows[i]["XLXSCLQD_XLBZID"].ToString().Trim(); string sXLBZMC = dsJudge.Tables[0].Rows[i]["XLBZ_XLBZLXMC"].ToString().Trim(); string sDYDJID = dsJudge.Tables[0].Rows[i]["XLXSCLQD_DYDJID"].ToString().Trim().Equals("") ? " " : dsJudge.Tables[0].Rows[i]["XLXSCLQD_DYDJID"].ToString().Trim(); Dictionary dicKeyDWCL = new Dictionary();//待我处理的记录关键字 sql.Clear(); sql.Add("select XLXSCLQD_JGCZBID,XLXSCLQD_JGCZBBBID,XLXSCLQD_CPMLID,XLXSCLQD_WFID,XLXSCLQD_WFINST,XLXSCLQD_WPID,XLXSCLQD_JGCZBBBID from XLXSCLQD where XLXSCLQD_XLXHID=:pXLXHID and XLXSCLQD_XLGGID=:pXLGGID and XLXSCLQD_XLBZID=:pXLBZID and XLXSCLQD_DYDJID=:pDYDJID"); sql.ParamByName("pXLXHID").Value = sXLXHID; sql.ParamByName("pXLGGID").Value = sXLGGID; sql.ParamByName("pXLBZID").Value = sXLBZID; sql.ParamByName("pDYDJID").Value = sDYDJID; DataSet ds = dberp.OpenDataSet(sql); if (ds.Tables[0].Rows.Count > 0) { string sWFID = ds.Tables[0].Rows[0]["XLXSCLQD_WFID"].ToString().Trim(); double dWFINST = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["XLXSCLQD_WFINST"].ToString().Trim()); string sWPID = ds.Tables[0].Rows[0]["XLXSCLQD_WPID"].ToString().Trim(); string sJGCZBID = ds.Tables[0].Rows[0]["XLXSCLQD_JGCZBID"].ToString().Trim(); if (sJGCZBID.Equals("")) { continue; } else if (!CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLJGCZBML where XLJGCZBML_JGCZBID='{0}' and XLJGCZBML_CZBLX='A'", sJGCZBID))) { continue; } TWorkflow awf = new TWorkflow(tSession, new System.Web.Caching.Cache()); awf.WFInfo(sWFID, dWFINST, tSession.UserId); bool isStop = awf.IsLastWFP(sWFID, awf.WPID); if (isStop) { continue; } if (!awf.Awaiter.Contains("," + tSession.UserId + ",")) { continue; } bool r = awf.WFRights.HasRight(TWFRight.wfrCanSubmit); if (!r) { string Processor = awf.GetProcessor(); if (Processor != "") { continue; } } CLYLKey tmpCLYLKey = new CLYLKey(); tmpCLYLKey.XLXHID = sXLXHID; tmpCLYLKey.XLGGID = sXLGGID; tmpCLYLKey.XLBZID = sXLBZID; tmpCLYLKey.DYDJID = sDYDJID; tmpCLYLKey.WFID = sWFID; tmpCLYLKey.WFINST = dWFINST; tmpCLYLKey.WPID = sWPID; dicKeyDWCL.Add(dWFINST, tmpCLYLKey); } //如果所有下级的IsCanSubmit都校验通过 //if (bflag) //{ foreach (double dKey in dicKeyDWCL.Keys) { string sWFID = dicKeyDWCL[dKey].WFID; string sWPID = dicKeyDWCL[dKey].WPID; double dWFINST = dicKeyDWCL[dKey].WFINST; if (sWPID.Equals("ZZZZ") || sWPID.Equals("ZZZY")) continue; TWorkflow wf = new TWorkflow(tSession, new System.Web.Caching.Cache()); wf.Enabled = true; wf.CurUserID = tSession.UserId; wf.WFInfo(sWFID, dWFINST, tSession.UserId); /* 获取下一步 */ TStrings wfpName = new TStrings(); string sNextWPID = ""; wfpName.Text = wf.WFGetNextWFP(sWFID, sWPID); if (wfpName.Count > 1) { sNextWPID = wfpName.Names(1); } else { if (!sMsg.Contains("【" + dicKeyDWCL[dKey].XLXHID + "," + dicKeyDWCL[dKey].XLGGID + "," + dicKeyDWCL[dKey].XLBZID + "," + dicKeyDWCL[dKey].DYDJID + "】没有满足条件的下一步事务!")) sMsg += "【" + dicKeyDWCL[dKey].XLXHID + "," + dicKeyDWCL[dKey].XLGGID + "," + dicKeyDWCL[dKey].XLBZID + "," + dicKeyDWCL[dKey].DYDJID + "】没有满足条件的下一步事务!" + wf.sFSWTJSM + "\r\n"; continue; //return "没有满足条件的下一步事务!" + wf.sFSWTJSM; } /* 获取下一步执行人员 */ ArrayList ZXRY = new ArrayList(); wf.WFGetUsers(sWFID, sNextWPID, ref ZXRY); string sNextAwaiter = wf.WFGetNextAwaiter(sWFID, sNextWPID); if (sNextAwaiter.Trim().Equals("") && !sNextWPID.Trim().Equals("ZZZZ") && !sNextWPID.Trim().Equals("ZZZY")) { if (!sMsg.Contains("【" + dicKeyDWCL[dKey].XLXHID + "," + dicKeyDWCL[dKey].XLGGID + "," + dicKeyDWCL[dKey].XLBZID + "," + dicKeyDWCL[dKey].DYDJID + "】下一步没有执行人!")) sMsg += "【" + dicKeyDWCL[dKey].XLXHID + "," + dicKeyDWCL[dKey].XLGGID + "," + dicKeyDWCL[dKey].XLBZID + "," + dicKeyDWCL[dKey].DYDJID + "】下一步没有执行人!" + wf.sFSWTJSM + "\r\n"; continue; //return "下一步没有执行人!" + wf.sFRYTJSM; } else if (sNextAwaiter.Length > 250) { if (!sMsg.Contains("【" + dicKeyDWCL[dKey].XLXHID + "," + dicKeyDWCL[dKey].XLGGID + "," + dicKeyDWCL[dKey].XLBZID + "," + dicKeyDWCL[dKey].DYDJID + "】下一步执行人超长!")) sMsg += "【" + dicKeyDWCL[dKey].XLXHID + "," + dicKeyDWCL[dKey].XLGGID + "," + dicKeyDWCL[dKey].XLBZID + "," + dicKeyDWCL[dKey].DYDJID + "】下一步执行人超长!" + "\r\n"; continue; //return "下一步执行人超长!"; } /* 执行提交操作 */ TWFActionParam Params = new TWFActionParam(); Params.sNextWFID = sWFID; Params.sNextWPID = sNextWPID; Params.WFAction = TWFAction.wfaSubmit; if (wf.WFWorkIsDone(sWFID, dWFINST, tSession.UserId)) { //如果返回结果为 false ,应该把 WPState 设置成 wfsRunning,为 true ,应该把 WPState 设置成 wpsSubmit Params.sWPState = TWorkflow.wpsSubmit; if (!wf.WFIsStopWPID(sWFID, sNextWPID)) Params.sWFState = TWorkflow.wfsRunning; else Params.sWFState = TWorkflow.wfsDone; } else//会签的情况 { if (!wf.WFIsStopWPID(sWFID, wf.WPID.Trim())) Params.sWFState = TWorkflow.wfsRunning; else Params.sWFState = TWorkflow.wfsDone; Params.sWPState = TWorkflow.wfsRunning; } Params.sNextAwaiter = sNextAwaiter; Params.sOpinion = "整单提交"; wf.dbe.BeginTrans(); try { wf.WFSubmit(sWFID, dWFINST, tSession.UserId, Params); //wf.Enabled = true; //wf.CurUserID = tSession.UserId; //wf.WFInfo(sWFID, dWFINST, tSession.UserId); TSQL ssql = new TSQL(wf.dbe); ssql.Clear(); ssql.Text = " update XLXSCLQD" + " set XLXSCLQD_WFID = :XLXSCLQD_WFID, XLXSCLQD_WPID = :XLXSCLQD_WPID, XLXSCLQD_WFAWAITER= :XLXSCLQD_WFAWAITER," + "\r\n" + " XLXSCLQD_WFHANDLER = :XLXSCLQD_WFHANDLER,XLXSCLQD_WFINST = :XLXSCLQD_WFINST,XLXSCLQD_ACTNAME = :XLXSCLQD_ACTNAME " + "\r\n" + " where XLXSCLQD_XLXHID=:pXLXHID and XLXSCLQD_XLGGID=:pXLGGID and XLXSCLQD_XLBZID=:pXLBZID and XLXSCLQD_DYDJID=:pDYDJID"; ssql.ParamByName("XLXSCLQD_WFID").Value = wf.WFID; ssql.ParamByName("XLXSCLQD_WPID").Value = wf.WPID; ssql.ParamByName("XLXSCLQD_WFAWAITER").Value = wf.Awaiter; ssql.ParamByName("XLXSCLQD_WFHANDLER").Value = wf.Handler; ssql.ParamByName("XLXSCLQD_WFINST").Value = wf.WFInst; ssql.ParamByName("XLXSCLQD_ACTNAME").Value = wf.GetWFActionName(TWFAction.wfaSubmit); ssql.ParamByName("pXLXHID").Value = dicKeyDWCL[dKey].XLXHID; ssql.ParamByName("pXLGGID").Value = dicKeyDWCL[dKey].XLGGID; ssql.ParamByName("pXLBZID").Value = dicKeyDWCL[dKey].XLBZID; ssql.ParamByName("pDYDJID").Value = dicKeyDWCL[dKey].DYDJID; wf.dbe.ExecSQL(ssql); if (wf.WPID.Equals("ZZZZ")) { string sJGCZBID = ds.Tables[0].Rows[0]["XLXSCLQD_JGCZBID"].ToString().Trim(); string sCPMLID = ds.Tables[0].Rows[0]["XLXSCLQD_CPMLID"].ToString().Trim(); string sJGCZBBBID = ds.Tables[0].Rows[0]["XLXSCLQD_JGCZBBBID"].ToString().Trim(); CLYLInfo.UpdateXLXSCLQD(wf.dbe, sJGCZBID, sJGCZBBBID, dicKeyDWCL[dKey].XLXHID, dicKeyDWCL[dKey].XLGGID, dicKeyDWCL[dKey].XLBZID, dicKeyDWCL[dKey].DYDJID, tSession.UserId, tSession.UserName); //交由“100860000|线缆销售报价单”手动触发更新 //CLYLInfo.UpdateBJDHQCLCB(wf.dbe, dicKeyDWCL[dKey].XLXHID, dicKeyDWCL[dKey].XLGGID, dicKeyDWCL[dKey].XLBZID, dicKeyDWCL[dKey].DYDJID, sCPMLID, GetOption(100860001, "BJU002"), GetOption("BJU003")); //CLYLInfo.UpdateXLXSBJDMX_BZ(wf.dbe,ssql,dicKeyDWCL[dKey].XLXHID, dicKeyDWCL[dKey].XLGGID, dicKeyDWCL[dKey].XLBZID, dicKeyDWCL[dKey].DYDJID, tSession); } wf.dbe.CommitTrans(); } catch (Exception ex) { wf.dbe.RollbackTrans(); ShowMessage(ex.Message); return; } } //} } if (!sMsg.Equals("")) ShowMessage(sMsg); else { ShowMessage("整单提交--完成!"); btnRefresh_Click(null, null); } } protected void btnPLTJ_MenuItemClick(object sender, string ItemIndex) { int index = Int32.Parse(ItemIndex); switch (index) { case 0: //整单退回 RePLTH(); break; } } //邮件沟通 protected void btnYJGT_OnClick(object sender, EventArgs e) { if (!CheckYJXJ(tSession.UserId)) { ShowMessage("无[100232002|邮件]模块权限,无法发送邮件通知!"); return; } if (grdGrid.SelectedIndex < 0) { ShowMessage("请选择处理记录!"); return; } string sWFAWAITER = grdGrid.DataKeys[grdGrid.SelectedIndex]["XLXSCLQD_WFAWAITER"].ToString().Trim(); if (!sWFAWAITER.Contains("," + tSession.UserId + ",")) { ShowMessage("当前用户并非记录的待处理人!"); return; } string sBJDID = grdGrid.DataKeys[grdGrid.SelectedIndex]["XLXSCLQD_BJDID"].ToString().Trim(); //报价单工作流信息 string pWFID = ""; string pWFINST = ""; if (!string.IsNullOrEmpty(sBJDID)) { TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL sql = new TSQL(dberp); sql.Add("select XLXSBJD_WFID,XLXSBJD_WFINST from XLXSBJD where XLXSBJD_BJDID = :pBJDID "); sql.ParamByName("pBJDID").Value = sBJDID; DataSet ds = dberp.OpenDataSet(sql); if (ds.Tables[0].Rows.Count > 0) { pWFID = ds.Tables[0].Rows[0]["XLXSBJD_WFID"].ToString().Trim(); pWFINST = ds.Tables[0].Rows[0]["XLXSBJD_WFINST"].ToString().Trim(); } else { ShowMessage("未找到对应的报价单!"); return; } } else { ShowMessage("未找到对应的报价单!"); return; } string sSJR = ""; string sCSR = ""; //材料用量工作流信息 string sWFID = grdGrid.DataKeys[grdGrid.SelectedIndex]["XLXSCLQD_WFID"].ToString().Trim(); string sWFINST = grdGrid.DataKeys[grdGrid.SelectedIndex]["XLXSCLQD_WFINST"].ToString().Trim(); TWorkflow awf = new TWorkflow(tSession, Cache); awf.WFInfo(sWFID, CMISproConvert.StrToFloat(sWFINST), tSession.UserId); //报价单工作流信息 TWorkflow awf1 = new TWorkflow(tSession, Cache); awf1.WFInfo(pWFID, CMISproConvert.StrToFloat(pWFINST), tSession.UserId); double dMDID = awf1.WPNMDID; if (dMDID == 100860061) { sSJR = GetXSYYH(sBJDID); sCSR = awf.Creater; } else sSJR = awf.Creater; TPageParams tpp = new TPageParams(); tpp.UrlPath = "CLYL_YJGTInfo.aspx"; tpp.CallAction = TPageCallAction.pcaInsert; tpp.AddString("tmpBJDID", sBJDID); tpp.AddString("tmpWFID", pWFID); tpp.AddString("tmpWFINST", pWFINST); tpp.AddString("tmpSJR", sSJR); tpp.AddString("tmpCSR", sCSR); tpp.AddString("tmpMDID", dMDID.ToString().Trim()); OpenDialog(tpp); } protected void btnZDJGCZB_OnClick(object sender, EventArgs e) { if (grdGrid.SelectedIndex < 0) { ShowMessage("请选择处理记录!"); return; } string sWFAWAITER = grdGrid.DataKeys[grdGrid.SelectedIndex]["XLXSCLQD_WFAWAITER"].ToString().Trim(); if (!sWFAWAITER.Contains("," + tSession.UserId + ",")) { ShowMessage("当前用户并非记录的待处理人!"); return; } string sBJDID = grdGrid.DataKeys[grdGrid.SelectedIndex]["XLXSCLQD_BJDID"].ToString().Trim(); string sXLXHID = grdGrid.DataKeys[grdGrid.SelectedIndex]["XLXSCLQD_XLXHID"].ToString().Trim(); string sDYDJID = grdGrid.DataKeys[grdGrid.SelectedIndex]["XLXSCLQD_DYDJID"].ToString().Trim(); string sJGCZBID = grdGrid.DataKeys[grdGrid.SelectedIndex]["XLXSCLQD_JGCZBID"].ToString().Trim(); string sJGCZBBBID = grdGrid.DataKeys[grdGrid.SelectedIndex]["XLXSCLQD_JGCZBBBID"].ToString().Trim(); TPageParams pageParams = new TPageParams(); pageParams.UrlPath = "CLYL_JGCZBInfo.aspx"; pageParams.AddString("BJDID", sBJDID); pageParams.AddString("XLXHID", sXLXHID); pageParams.AddString("DYDJID", sDYDJID); if (!sJGCZBID.Equals("")) pageParams.AddString("JGCZB", sJGCZBID + "|" + sJGCZBBBID); else pageParams.AddString("JGCZB", ""); pageParams.AddString("btnRefreshClientID", btnRefresh.ClientID); OpenDialog(pageParams); } #endregion } }