/// <summary> /// 按照约定的字段 SysCCEmps 系统人员. /// </summary> public void CCByEmps() { if (this.HisNode.HisCCRole != CCRole.BySysCCEmps) { return; } CC cc = this.HisNode.HisCC; //生成标题与内容. string ccTitle = cc.CCTitle.Clone() as string; ccTitle = BP.WF.Glo.DealExp(ccTitle, this.rptGe, null); string ccDoc = cc.CCDoc.Clone() as string; ccDoc = BP.WF.Glo.DealExp(ccDoc, this.rptGe, null); //取出抄送人列表 string ccers = this.rptGe.GetValStrByKey("SysCCEmps"); if (!string.IsNullOrEmpty(ccers)) { string[] cclist = ccers.Split('|'); Hashtable ht = new Hashtable(); foreach (string item in cclist) { string[] tmp = item.Split(','); ht.Add(tmp[0], tmp[1]); } string ccMsg = "@消息自动抄送给"; string basePath = BP.WF.Glo.HostURL; string mailTemp = BP.DA.DataType.ReadTextFile2Html(BP.Sys.SystemConfig.PathOfDataUser + "\\EmailTemplete\\CC_" + WebUser.SysLang + ".txt"); foreach (DictionaryEntry item in ht) { ccDoc = ccDoc.Replace("@Accepter", item.Value.ToString()); ccTitle = ccTitle.Replace("@Accepter", item.Value.ToString()); //抄送信息. ccMsg += "(" + item.Value.ToString() + " - " + item.Value.ToString() + ");"; #region 如果是写入抄送列表. CCList list = new CCList(); list.MyPK = this.WorkID + "_" + this.HisNode.NodeID + "_" + item.Key.ToString(); list.FK_Flow = this.HisNode.FK_Flow; list.FlowName = this.HisNode.FlowName; list.FK_Node = this.HisNode.NodeID; list.NodeName = this.HisNode.Name; list.Title = ccTitle; list.Doc = ccDoc; list.CCTo = item.Key.ToString(); list.CCToName = item.Value.ToString(); list.RDT = DataType.CurrentDataTime; list.Rec = WebUser.No; list.WorkID = this.WorkID; list.FID = this.HisWorkNode.HisWork.FID; list.InEmpWorks = this.HisNode.CCWriteTo == CCWriteTo.CCList ? false : true; //added by liuxc,2015.7.6 //写入待办和写入待办与抄送列表,状态不同 if (this.HisNode.CCWriteTo == CCWriteTo.All || this.HisNode.CCWriteTo == CCWriteTo.Todolist) { //如果为写入待办则抄送列表中置为已读,原因:只为不提示有未读抄送。 list.HisSta = this.HisNode.CCWriteTo == CCWriteTo.All ? CCSta.UnRead : CCSta.Read; } //如果为结束节点,只写入抄送列表 if (this.HisNode.IsEndNode == true) { list.HisSta = CCSta.UnRead; list.InEmpWorks = false; } //执行保存或更新 try { list.Insert(); } catch { list.CheckPhysicsTable(); list.Update(); } #endregion 如果要写入抄送 if (BP.WF.Glo.IsEnableSysMessage == true) { ccMsg += list.CCTo + "(" + item.Value.ToString() + ");"; BP.WF.Port.WFEmp wfemp = new Port.WFEmp(list.CCTo); string sid = list.CCTo + "_" + list.WorkID + "_" + list.FK_Node + "_" + list.RDT; string url = basePath + "WF/Do.aspx?DoType=OF&SID=" + sid; url = url.Replace("//", "/"); url = url.Replace("//", "/"); string urlWap = basePath + "WF/Do.aspx?DoType=OF&SID=" + sid + "&IsWap=1"; urlWap = urlWap.Replace("//", "/"); urlWap = urlWap.Replace("//", "/"); string mytemp = mailTemp.Clone() as string; mytemp = string.Format(mytemp, wfemp.Name, WebUser.Name, url, urlWap); string title = string.Format("工作抄送:{0}.工作:{1},发送人:{2},需您查阅", this.HisNode.FlowName, this.HisNode.Name, WebUser.Name); BP.WF.Dev2Interface.Port_SendMsg(wfemp.No, title, mytemp, null, BP.WF.SMSMsgType.CC, list.FK_Flow, list.FK_Node, list.WorkID, list.FID); } } //写入系统消息. this.HisWorkNode.addMsg(SendReturnMsgFlag.CCMsg, ccMsg); //写入日志. this.HisWorkNode.AddToTrack(ActionType.CC, WebUser.No, WebUser.Name, this.HisNode.NodeID, this.HisNode.Name, ccMsg, this.HisNode); } }
public void AutoCC() { if (this.HisWorkNode.HisNode.HisCCRole == CCRole.AutoCC || this.HisWorkNode.HisNode.HisCCRole == CCRole.HandAndAuto) { } else { return; } /*如果是自动抄送*/ CC cc = this.HisWorkNode.HisNode.HisCC; #region 替换节点变量 cc.CCSQL = cc.CCSQL.Replace("@FK_Node", this.HisNode.NodeID + ""); cc.CCSQL = cc.CCSQL.Replace("@FK_Flow", this.HisNode.FK_Flow); cc.CCSQL = cc.CCSQL.Replace("@OID", this.HisWorkNode.WorkID + ""); #endregion // 执行抄送. DataTable dt = cc.GenerCCers(this.HisWorkNode.rptGe); if (dt.Rows.Count == 0) { return; } string ccMsg = "@消息自动抄送给"; string basePath = BP.WF.Glo.HostURL; string mailTemp = BP.DA.DataType.ReadTextFile2Html(BP.Sys.SystemConfig.PathOfDataUser + "\\EmailTemplete\\CC_" + WebUser.SysLang + ".txt"); GenerWorkerLists gwls = null; if (this.HisWorkNode.town != null) { //取出抄送集合,如果待办里有此人就取消该人员的抄送. gwls = new GenerWorkerLists(this.WorkID, this.HisWorkNode.town.HisNode.NodeID); } foreach (DataRow dr in dt.Rows) { string toUserNo = dr[0].ToString(); //如果待办包含了它. if (gwls != null && gwls.Contains(GenerWorkerListAttr.FK_Emp, toUserNo) == true) { continue; } string toUserName = dr[1].ToString(); //生成标题与内容. string ccTitle = cc.CCTitle.Clone() as string; ccTitle = BP.WF.Glo.DealExp(ccTitle, this.rptGe, null); string ccDoc = cc.CCDoc.Clone() as string; ccDoc = BP.WF.Glo.DealExp(ccDoc, this.rptGe, null); ccDoc = ccDoc.Replace("@Accepter", toUserNo); ccTitle = ccTitle.Replace("@Accepter", toUserNo); //抄送信息. ccMsg += "(" + toUserNo + " - " + toUserName + ");"; CCList list = new CCList(); list.MyPK = this.HisWorkNode.WorkID + "_" + this.HisWorkNode.HisNode.NodeID + "_" + dr[0].ToString(); list.FK_Flow = this.HisWorkNode.HisNode.FK_Flow; list.FlowName = this.HisWorkNode.HisNode.FlowName; list.FK_Node = this.HisWorkNode.HisNode.NodeID; list.NodeName = this.HisWorkNode.HisNode.Name; list.Title = ccTitle; list.Doc = ccDoc; list.CCTo = dr[0].ToString(); list.CCToName = dr[1].ToString(); list.RDT = DataType.CurrentDataTime; list.Rec = WebUser.No; list.WorkID = this.HisWorkNode.WorkID; list.FID = this.HisWorkNode.HisWork.FID; list.InEmpWorks = this.HisNode.CCWriteTo == CCWriteTo.CCList ? false : true; //added by liuxc,2015.7.6 //写入待办和写入待办与抄送列表,状态不同 if (this.HisNode.CCWriteTo == CCWriteTo.All || this.HisNode.CCWriteTo == CCWriteTo.Todolist) { //如果为写入待办则抄送列表中置为已读,原因:只为不提示有未读抄送。 list.HisSta = this.HisNode.CCWriteTo == CCWriteTo.All ? CCSta.UnRead : CCSta.Read; } //结束节点只写入抄送列表 if (this.HisNode.IsEndNode == true) { list.HisSta = CCSta.UnRead; list.InEmpWorks = false; } try { list.Insert(); } catch { list.Update(); } if (BP.WF.Glo.IsEnableSysMessage == true) { // //写入消息提示. // ccMsg += list.CCTo + "(" + dr[1].ToString() + ");"; // BP.WF.Port.WFEmp wfemp = new Port.WFEmp(list.CCTo); // string sid = list.CCTo + "_" + list.WorkID + "_" + list.FK_Node + "_" + list.RDT; // string url = basePath + "WF/Do.aspx?DoType=OF&SID=" + sid; // string urlWap = basePath + "WF/Do.aspx?DoType=OF&SID=" + sid + "&IsWap=1"; // string mytemp = mailTemp.Clone() as string; // mytemp = string.Format(mytemp, wfemp.Name, WebUser.Name, url, urlWap); // string title = string.Format("工作抄送:{0}.工作:{1},发送人:{2},需您查阅", //this.HisNode.FlowName, this.HisNode.Name, WebUser.Name); // BP.WF.Dev2Interface.Port_SendMsg(wfemp.No, title, mytemp, null, BP.Sys.SMSMsgType.CC, list.FK_Flow, list.FK_Node, list.WorkID, list.FID); } } this.HisWorkNode.addMsg(SendReturnMsgFlag.CCMsg, ccMsg); //写入日志. this.HisWorkNode.AddToTrack(ActionType.CC, WebUser.No, WebUser.Name, this.HisNode.NodeID, this.HisNode.Name, ccMsg, this.HisNode); }
protected void Page_Load(object sender, System.EventArgs e) { Response.AddHeader("P3P", "CP=CAO PSA OUR"); Response.AddHeader("Cache-Control", "no-store"); Response.AddHeader("Expires", "0"); Response.AddHeader("Pragma", "no-cache"); string url = this.Request.RawUrl; if (url.Contains("DTT=") == false) { //this.Response.Redirect(url + "&DTT=" + DateTime.Now.ToString("mmDDhhmmss"), true); //return; } try { string str = ""; switch (this.ActionType) { case "DoOpenCC": string fk_flow1 = this.Request.QueryString["FK_Flow"]; string fk_node1 = this.Request.QueryString["FK_Node"]; string workid1 = this.Request.QueryString["WorkID"]; string fid1 = this.Request.QueryString["FID"]; string Sta = this.Request.QueryString["Sta"]; if (Sta == "0") { BP.WF.CCList cc1 = new BP.WF.CCList(); cc1.MyPK = this.Request.QueryString["MyPK"]; cc1.Retrieve(); cc1.HisSta = CCSta.Read; cc1.Update(); } this.Response.Redirect(this.Request.ApplicationPath + "WF/WorkOpt/OneWork/Track.aspx?FK_Flow=" + fk_flow1 + "&FK_Node=" + fk_node1 + "&WorkID=" + workid1 + "&FID=" + fid1, false); return; case "DelCC": //删除抄送. CCList cc = new CCList(); cc.MyPK = this.MyPK; cc.Retrieve(); cc.HisSta = CCSta.Del; cc.Update(); this.WinClose(); break; case "DelSubFlow": //删除进程。 try { WorkFlow wf14 = new WorkFlow(this.FK_Flow, this.WorkID); wf14.DoDeleteWorkFlowByReal(true); this.WinClose(); } catch (Exception ex) { this.WinCloseWithMsg(ex.Message); } break; case "DownBill": BP.WF.Bill b = new Bill(this.MyPK); b.DoOpen(); break; case "DelDtl": GEDtls dtls = new GEDtls(this.EnsName); GEDtl dtl = (GEDtl)dtls.GetNewEntity; dtl.OID = this.RefOID; if (dtl.RetrieveFromDBSources() == 0) { this.WinClose(); break; } FrmEvents fes = new FrmEvents(this.EnsName); //获得事件. // 处理删除前事件. try { fes.DoEventNode(BP.WF.XML.EventListDtlList.DtlItemDelBefore, dtl); } catch (Exception ex) { this.WinCloseWithMsg(ex.Message); break; } dtl.Delete(); // 处理删除后事件. try { fes.DoEventNode(BP.WF.XML.EventListDtlList.DtlItemDelAfter, dtl); } catch (Exception ex) { this.WinCloseWithMsg(ex.Message); break; } this.WinClose(); break; case "EmpDoUp": BP.WF.Port.WFEmp ep = new BP.WF.Port.WFEmp(this.RefNo); ep.DoUp(); BP.WF.Port.WFEmps emps111 = new BP.WF.Port.WFEmps(); // emps111.RemoveCash(); emps111.RetrieveAll(); this.WinClose(); break; case "EmpDoDown": BP.WF.Port.WFEmp ep1 = new BP.WF.Port.WFEmp(this.RefNo); ep1.DoDown(); BP.WF.Port.WFEmps emps11441 = new BP.WF.Port.WFEmps(); // emps11441.RemoveCash(); emps11441.RetrieveAll(); this.WinClose(); break; case "OF": string sid = this.Request.QueryString["SID"]; string[] strs = sid.Split('_'); GenerWorkerList wl = new GenerWorkerList(); int i = wl.Retrieve(GenerWorkerListAttr.FK_Emp, strs[0], GenerWorkerListAttr.WorkID, strs[1], GenerWorkerListAttr.FK_Node, strs[2]); if (i == 0) { this.Response.Write("<h2>提示</h2>此工作已经被别人处理或者此流程已删除。"); return; } BP.Port.Emp emp155 = new BP.Port.Emp(wl.FK_Emp); Web.WebUser.SignInOfGener(emp155, true); string u = "MyFlow.aspx?FK_Flow=" + wl.FK_Flow + "&WorkID=" + wl.WorkID; if (this.Request.QueryString["IsWap"] != null) { u = "./../WF/WAP/" + u; } this.Response.Write("<script> window.location.href='" + u + "'</script> *^_^* <br><br>正在进入系统请稍后,如果长时间没有反应,请<a href='" + u + "'>点这里进入。</a>"); return; case "ExitAuth": BP.Port.Emp emp = new BP.Port.Emp(this.FK_Emp); BP.Web.WebUser.SignInOfGenerLang(emp, WebUser.SysLang); this.WinClose(); return; case "LogAs": BP.WF.Port.WFEmp wfemp = new BP.WF.Port.WFEmp(this.FK_Emp); if (wfemp.AuthorIsOK == false) { this.WinCloseWithMsg("授权失败"); return; } BP.Port.Emp emp1 = new BP.Port.Emp(this.FK_Emp); BP.Web.WebUser.SignInOfGener(emp1, WebUser.SysLang, WebUser.No, true, false); this.WinClose(); return; case "TakeBack": // 取消授权。 BP.WF.Port.WFEmp myau = new BP.WF.Port.WFEmp(WebUser.No); BP.DA.Log.DefaultLogWriteLineInfo("取消授权:" + WebUser.No + "取消了对(" + myau.Author + ")的授权。"); myau.Author = ""; myau.AuthorWay = 0; myau.Update(); this.WinClose(); return; case "AutoTo": // 执行授权。 BP.WF.Port.WFEmp au = new BP.WF.Port.WFEmp(); au.No = WebUser.No; au.RetrieveFromDBSources(); au.AuthorDate = BP.DA.DataType.CurrentData; au.Author = this.FK_Emp; au.AuthorWay = 1; au.Save(); BP.DA.Log.DefaultLogWriteLineInfo("执行授权:" + WebUser.No + "执行了对(" + au.Author + ")的授权。"); this.WinClose(); return; case "UnSend": // 执行撤消发送。 try { string str1 = BP.WF.Dev2Interface.Flow_DoUnSend(this.FK_Flow, this.WorkID); this.Session["info"] = str1; this.Response.Redirect("MyFlowInfo" + this.PageID + ".aspx?FK_Flow=" + this.FK_Flow + "&WorkID=" + this.WorkID, false); return; } catch (Exception ex) { this.Session["info"] = "@执行撤消失败。@失败信息" + ex.Message; this.Alert(ex.Message); //this.WinCloseWithMsg(ex.Message); this.Response.Redirect("MyFlowInfo" + this.PageID + ".aspx?FK_Flow=" + this.FK_Flow + "&WorkID=" + this.WorkID + "&FK_Type=warning", false); return; } // this.Response.Redirect("MyFlow.aspx?WorkID=" + this.WorkID + "&FK_Flow=" + this.FK_Flow, true); case "SetBillState": break; case "WorkRpt": Bill bk1 = new Bill(this.Request.QueryString["OID"]); Node nd = new Node(bk1.FK_Node); this.Response.Redirect("WFRpt.aspx?WorkID=" + bk1.WorkID + "&FID=" + bk1.FID + "&FK_Flow=" + nd.FK_Flow + "&NodeId=" + bk1.FK_Node, false); //this.WinOpen(); //this.WinClose(); break; case "PrintBill": //Bill bk2 = new Bill(this.Request.QueryString["OID"]); //Node nd2 = new Node(bk2.FK_Node); //this.Response.Redirect("NodeRefFunc.aspx?NodeId=" + bk2.FK_Node + "&FlowNo=" + nd2.FK_Flow + "&NodeRefFuncOID=" + bk2.FK_NodeRefFunc + "&WorkFlowID=" + bk2.WorkID); ////this.WinClose(); break; //删除流程中第一个节点的数据,包括待办工作 case "DeleteFlow": string fk_flow = this.Request.QueryString["FK_Flow"]; Int64 workid = Int64.Parse(this.Request.QueryString["WorkID"]); //调用DoDeleteWorkFlowByReal方法 WorkFlow wf = new WorkFlow(new Flow(fk_flow), workid); wf.DoDeleteWorkFlowByReal(true); this.ToMsgPage("流程删除成功"); break; default: throw new Exception("ActionType error" + this.ActionType); } } catch (Exception ex) { this.ToErrorPage("执行其间如下异常:<BR>" + ex.Message); } }