Exemplo n.º 1
0
        /// <summary>
        /// 设置信息.
        /// </summary>
        /// <param name="keyVals"></param>
        public static void SetValToCookie(string keyVals)
        {
            if (BP.Sys.SystemConfig.IsBSsystem == false)
            {
                return;
            }

            HttpCookie hc = BP.Sys.Glo.Request.Cookies["CCS"];

            if (hc != null)
            {
                BP.Sys.Glo.Request.Cookies.Remove("CCS");
            }

            HttpCookie cookie = new HttpCookie("CCS");

            cookie.Expires = DateTime.Now.AddMinutes(SystemConfig.SessionLostMinute);

            AtPara ap = new AtPara(keyVals);

            foreach (string key in ap.HisHT.Keys)
            {
                cookie.Values.Add(key, HttpUtility.UrlEncode(ap.GetValStrByKey(key)));
            }

            System.Web.HttpContext.Current.Response.AppendCookie(cookie);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 执行发送
        /// </summary>
        /// <param name="para"></param>
        public void DoSend(AtPara para)
        {
            Globals.ThisAddIn.DoSave();
            object obj = Type.Missing;

            Globals.ThisAddIn.Application.ActiveDocument.Close(ref obj, ref obj, ref obj);
        }
Exemplo n.º 3
0
    public void DoDelete()
    {
        Prj    prj  = new Prj(this.FK_Prj);
        AtPara ap   = new AtPara(prj.Files);
        string file = ap.GetValStrByKey(this.IDX.ToString());

        File.Delete(file);
        this.WinClose();
    }
Exemplo n.º 4
0
    public void DoDown()
    {
        Prj      prj  = new Prj(this.FK_Prj);
        AtPara   ap   = new AtPara(prj.Files);
        string   file = ap.GetValStrByKey(this.IDX.ToString());
        FileInfo fi   = new FileInfo(file);

        BP.PubClass.DownloadFile(fi.FullName, fi.Name);
        this.WinClose();
    }
Exemplo n.º 5
0
        /// <summary>
        /// UI的设置.Search. Card, Group信息.
        /// </summary>
        /// <param name="enName"></param>
        public UIConfig(Entity en)
        {
            this.HisEn = en;
            EnCfg  cfg     = new EnCfg(en.ToString());
            string paraStr = cfg.UI;

            if (DataType.IsNullOrEmpty(paraStr) == true)
            {
                paraStr = "@UIRowStyleGlo=0@IsEnableDouclickGlo=1@IsEnableRefFunc=1@IsEnableFocusField=1@IsEnableOpenICON=1@FocusField=''@WinCardH=600@@WinCardW=800@ShowColumns=";
            }
            HisAP = new AtPara(paraStr);
        }
Exemplo n.º 6
0
        /// <summary>
        /// 打开流程
        /// </summary>
        /// <param name="para"></param>
        public void DoOpenFlow(AtPara para)
        {
            string fk_flow = para.GetValStrByKey("FK_Flow");
            int    workid  = para.GetValIntByKey("WorkID");
            int    fk_node = para.GetValIntByKey("FK_Node");

            if (WebUser.WorkID == workid && WebUser.FK_Node == fk_node)
            {
                if (MessageBox.Show("当前流程已经打开,您想重新加载吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.No)
                {
                    this.webBrowser1.GoBack();
                    return;
                }
            }

            string file = Glo.PathOfTInstall + workid + "@" + WebUser.No + ".doc";

            if (File.Exists(file) == false)
            {
                try
                {
                    FtpSupport.FtpConnection conn = Glo.HisFtpConn;
                    if (conn.DirectoryExist("/DocFlow/" + fk_flow + "/" + workid))
                    {
                        conn.SetCurrentDirectory("/DocFlow/" + fk_flow + "/" + workid);
                        conn.GetFile(workid + ".doc", file, true, FileAttributes.Archive);
                        conn.Close();
                    }
                    else
                    {
                        throw new Exception("@没有找到文件,流程文件丢失错误。");
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("@打开公文错误@技术信息:" + ex.Message + "@流程编号:" + WebUser.FK_Flow);
                    return;
                }
            }

            WebUser.FK_Flow = fk_flow;
            WebUser.FK_Node = fk_node;
            WebUser.WorkID  = workid;

            WebUser.RetrieveWFNode(WebUser.FK_Node);

            /*如果存在这个文件,就激活它。*/
            WebUser.WriterIt(StartFlag.DoOpenFlow, fk_flow, fk_node, workid);
            this.OpenDoc(file, false);
            this.Close();
        }
Exemplo n.º 7
0
        /// <summary>
        /// 获取当前用户是否具有导出数据的权限
        /// <para>added by liuxc,2017-04-30</para>
        /// <remarks>注意:此权限数据保存于Sys_Regedit.Paras字段中,为@ExpEmpNos=liyan,liping,ligen格式</remarks>
        /// </summary>
        /// <param name="ensName">集合类全名,如BP.Port.Emps</param>
        /// <returns></returns>
        public static bool HaveRoleForExp(string ensName)
        {
            //获取可导入权限
            UserRegedit ur      = new UserRegedit("admin", ensName + "_SearchAttrs");
            string      impEmps = new AtPara(ur.Paras).GetValStrByKey("ExpEmpNos");

            if (string.IsNullOrWhiteSpace(impEmps))
            {
                return(true);
            }
            else
            {
                return(WebUser.No == "admin" || ("," + impEmps + ",").IndexOf("," + WebUser.No + ",") != -1);
            }
        }
Exemplo n.º 8
0
        public void DoOpenDoc(AtPara para)
        {
            string fk_flow = para.GetValStrByKey("FK_Flow");
            int    workid  = para.GetValIntByKey("WorkID");
            int    fk_node = para.GetValIntByKey("FK_Node");

            string file = Glo.PathOfTInstall + workid + "@" + WebUser.No + ".doc";

            if (File.Exists(file) == false)
            {
                try
                {
                    FtpSupport.FtpConnection conn = Glo.HisFtpConn;
                    if (conn.DirectoryExist("/DocFlow/" + fk_flow + "/" + workid))
                    {
                        conn.SetCurrentDirectory("/DocFlow/" + fk_flow + "/" + workid);
                        conn.GetFile(workid + ".doc", file, true, FileAttributes.Archive);
                        conn.Close();
                    }
                    else
                    {
                        throw new Exception("@没有找到文件,流程错误。");
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("@打开公文错误@技术信息:" + ex.Message + "@流程编号:" + WebUser.FK_Flow);
                    return;
                }
            }

            WebUser.FK_Flow = fk_flow;
            WebUser.FK_Node = fk_node;
            WebUser.WorkID  = workid;

            WebUser.RetrieveWFNode(WebUser.FK_Node);

            /*如果存在这个文件,就激活它。*/
            WebUser.WriterIt(StartFlag.DoOpenDoc, fk_flow, fk_node, workid);

            this.OpenDoc(file, false);
            this.HisRibbon1.SetState();
            this.Close();
        }
Exemplo n.º 9
0
        public string SaveEn(string vals)
        {
            Entity en = null;

            try
            {
                AtPara ap     = new AtPara(vals);
                string enName = ap.GetValStrByKey("EnName");
                string pk     = ap.GetValStrByKey("PKVal");
                en = ClassFactory.GetEn(enName);
                en.ResetDefaultVal();

                if (en == null)
                {
                    throw new Exception("无效的类名:" + enName);
                }

                if (string.IsNullOrEmpty(pk) == false)
                {
                    en.PKVal = pk;
                    en.RetrieveFromDBSources();
                }

                foreach (string key in ap.HisHT.Keys)
                {
                    if (key == "PKVal")
                    {
                        continue;
                    }
                    en.SetValByKey(key, ap.HisHT[key].ToString().Replace('#', '@'));
                }
                en.Save();
                return(en.PKVal as string);
            }
            catch (Exception ex)
            {
                if (en != null)
                {
                    en.CheckPhysicsTable();
                }

                return("Error:" + ex.Message);
            }
        }
Exemplo n.º 10
0
        /// <summary>
        /// 发起流程
        /// </summary>
        /// <param name="para"></param>
        public void DoStartFlow(AtPara para)
        {
            string fk_flow = para.GetValStrByKey("FK_Flow");
            string workid  = para.GetValStrByKey("WorkID");
            string file    = Glo.PathOfTInstall + workid + "@" + WebUser.No + ".doc";

            if (File.Exists(file) == false)
            {
                try
                {
                    FtpSupport.FtpConnection conn = Glo.HisFtpConn;
                    if (conn.DirectoryExist("/DocFlow/" + fk_flow + "/" + workid))
                    {
                        conn.SetCurrentDirectory("/DocFlow/" + fk_flow + "/" + workid);
                        if (conn.FileExist(WebUser.FK_Node + "@" + WebUser.No + ".doc"))
                        {
                            conn.GetFile(WebUser.FK_Node + "@" + WebUser.No + ".doc", file, true, FileAttributes.Archive);
                        }
                        else
                        {
                            file = null;
                        }
                    }
                    else
                    {
                        file = null;
                    }
                    conn.Close();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("@流程设计错误,没有为该流程维护公文模板。@技术信息:" + ex.Message + "@流程编号:" + WebUser.FK_Flow);
                    return;
                }
            }

            WebUser.FK_Flow = fk_flow;
            WebUser.WorkID  = int.Parse(workid);

            /*如果存在这个文件,就激活它。*/
            WebUser.WriterIt(StartFlag.DoNewFlow, fk_flow, int.Parse(fk_flow + "01"), int.Parse(workid));
            this.OpenDoc(file, false);
            this.Close();
        }
Exemplo n.º 11
0
        protected void Page_Load(object sender, EventArgs e)
        {
            this.Title = "您好:" + WebUser.No + ";选择范围";

            UserRegedit ur = new UserRegedit();

            ur.MyPK = this.MyPK;
            if (ur.RetrieveFromDBSources() == 0)
            {
                ur.MyPK   = this.MyPK;
                ur.FK_Emp = WebUser.No;
                ur.CfgKey = this.EnsName + "_SearchAttrs";
                ur.Insert();
            }

            Entity en     = BP.DA.ClassFactory.GetEns(this.EnsName).GetNewEntity;
            Attr   attr   = en.EnMap.GetAttrByKey(this.AttrKey);
            string cfgVal = ur.MVals;

            if (string.IsNullOrEmpty(cfgVal))
            {
                cfgVal = "";
            }

            AtPara ap = new AtPara(cfgVal);

            cfgVal = ap.GetValStrByKey(this.AttrKey);
            if (string.IsNullOrEmpty(cfgVal))
            {
                cfgVal = "";
            }

            if (attr.IsEnum)
            {
                this.BindEnum(ur, attr, cfgVal);
            }
            else
            {
                this.BindEns(ur, attr, cfgVal);
            }
        }
Exemplo n.º 12
0
    void btn_Upload_Click(object sender, EventArgs e)
    {
        System.Web.UI.WebControls.FileUpload fu = this.Pub1.FindControl("file") as System.Web.UI.WebControls.FileUpload;
        if (fu.HasFile == false || fu.FileName.Length <= 2)
        {
            this.Alert("请选择上传的文件.");
            return;
        }

        Prj    prj  = new Prj(this.FK_Prj);
        AtPara ap   = new AtPara(prj.Files);
        string file = ap.GetValStrByKey(this.IDX.ToString());

        try
        {
            fu.SaveAs(file);
        }
        catch
        {
            string root     = BP.SystemConfig.PathOfDataUser + "\\PrjData\\Templete\\" + this.FK_Prj;
            string rootData = BP.SystemConfig.PathOfDataUser + "\\PrjData\\Data\\" + this.FK_Prj;
            if (Directory.Exists(rootData) == false)
            {
                Directory.CreateDirectory(rootData);
            }
            string[] strs = System.IO.Directory.GetDirectories(root);
            foreach (string str in strs)
            {
                DirectoryInfo info = new DirectoryInfo(str);
                if (Directory.Exists(rootData + "\\" + info.Name) == false)
                {
                    Directory.CreateDirectory(rootData + "\\" + info.Name);
                }
            }
            fu.SaveAs(file);
        }
        this.WinClose();
    }
Exemplo n.º 13
0
        /// <summary>
        /// 按照模板生成公文
        /// </summary>
        /// <param name="para"></param>
        public void DoStartFlowByTemple(AtPara para)
        {
            string fk_flow = para.GetValStrByKey("FK_Flow");

            // 下载流程模板
            FtpSupport.FtpConnection conn = Glo.HisFtpConn;
            string file = Glo.PathOfTInstall + fk_flow + "@" + DateTime.Now.ToString("MM月dd日hh时mm分ss秒") + ".doc";

            try
            {
                conn.SetCurrentDirectory("/DocFlowTemplete/");
                if (conn.FileExist(fk_flow + ".doc") == false)
                {
                    throw new Exception("@没有为公文启动设置模板。");
                }

                conn.GetFile(fk_flow + ".doc", file, true, FileAttributes.Archive);
                conn.Close();
            }
            catch (Exception ex)
            {
                conn.Close();
                file = null;
                MessageBox.Show("@异常信息:" + ex.Message + "\t\n@流程编号:" + WebUser.FK_Flow + "\t\n@可能的原因如下:1,设计人员没有正确的设置ftp服务器。 \t\n2,没有该流程的公文模板。");
            }

            WebUser.WorkID  = 0;
            WebUser.FK_Flow = fk_flow;
            WebUser.FK_Node = int.Parse(fk_flow + "01");

            WebUser.RetrieveWFNode(WebUser.FK_Node);

            this.HisRibbon1.SetState();
            WebUser.WriterIt(StartFlag.DoNewFlow, fk_flow, int.Parse(fk_flow + "01"), 0);
            this.OpenDoc(file, false);
            this.Close();
        }
Exemplo n.º 14
0
        /// <summary>
        /// 填充数据
        /// </summary>
        /// <param name="attrs"></param>
        /// <param name="pa"></param>
        public void BindAttrs(Attrs attrs, AtPara pa)
        {
            bool isReadonly = false;

            this.IsReadonly = false;
            this.IsShowDtl  = false;
            this.Attributes["visibility"] = "hidden";
            this.Add("<table width='100%' id='a1' border='1' cellpadding='0' cellspacing='0' style='border-collapse: collapse' bordercolor='#111111' >");
            bool   isLeft  = true;
            object val     = null;
            bool   isAddTR = true;

            foreach (Attr attr in attrs)
            {
                if (attr.UIVisible == false)
                {
                    continue;
                }

                if (attr.Key == "MyNum")
                {
                    continue;
                }

                if (isLeft)
                {
                    isAddTR = true;
                    this.AddTR();
                }

                val = pa.GetValStrByKey(attr.Key);
                if (attr.UIContralType == UIContralType.TB)
                {
                    if (attr.MyFieldType == FieldType.RefText)
                    {
                        this.SetValByKey(attr.Key, val.ToString());
                        continue;
                    }
                    else if (attr.MyFieldType == FieldType.MultiValues)
                    {
                        /* 如果是多值的.*/
                        LB lb = new LB(attr);
                        lb.Visible       = true;
                        lb.Height        = 128;
                        lb.SelectionMode = ListSelectionMode.Multiple;
                        Entities ens = ClassFactory.GetEns(attr.UIBindKey);
                        ens.RetrieveAll();
                        this.Controls.Add(lb);
                    }
                    else
                    {
                        if (attr.UIVisible == false)
                        {
                            TB tb = new TB();
                            tb.LoadMapAttr(attr);
                            tb.ID = "TB_" + attr.Key;
                            tb.Attributes["Visible"] = "false";
                            this.Controls.Add(tb);
                            continue;
                        }
                        else
                        {
                            if (attr.UIHeight != 0)
                            {
                                TB area = new TB();
                                area.LoadMapAttr(attr);
                                area.ID       = "TB_" + attr.Key;
                                area.Text     = val.ToString();
                                area.Rows     = 8;
                                area.TextMode = TextBoxMode.MultiLine;
                                area.Attributes["onchange"] += "Change('TB_" + attr.Key + "');";
                                if (isReadonly)
                                {
                                    area.Enabled = false;
                                }
                                this.AddContral(attr.Desc, area);
                            }
                            else
                            {
                                TB tb = new TB();
                                tb.LoadMapAttr(attr);

                                tb.ID = "TB_" + attr.Key;
                                if (isReadonly)
                                {
                                    tb.Enabled = false;
                                }
                                switch (attr.MyDataType)
                                {
                                case DataType.AppMoney:
                                    tb.Text = decimal.Parse(val.ToString()).ToString("0.00");
                                    break;

                                default:
                                    tb.Text = val.ToString();
                                    break;
                                }
                                tb.Attributes["width"]     = "100%";
                                tb.Attributes["onchange"] += "Change('TB_" + attr.Key + "');";
                                this.AddContral(attr.Desc, tb);
                            }
                        }
                    }
                }
                else if (attr.UIContralType == UIContralType.CheckBok)
                {
                    val = pa.GetValBoolenByKey(attr.Key);
                    CheckBox cb = new CheckBox();
                    cb.Checked = (bool)val;

                    if (isReadonly)
                    {
                        cb.Enabled = false;
                    }
                    else
                    {
                        cb.Enabled = attr.UIVisible;
                        cb.Attributes["onmousedown"] = "Change('CB_" + attr.Key + "')";
                    }

                    cb.ID = "CB_" + attr.Key;
                    this.AddContral(attr.Desc, cb);
                }
                else if (attr.UIContralType == UIContralType.DDL)
                {
                    if (isReadonly || !attr.UIIsReadonly)
                    {
                        /* 如果是 DDLIsEnable 的, 就要找到. */
                        if (attr.MyFieldType == FieldType.Enum)
                        {
                            /* 如果是 enum 类型 */
                            int enumKey = 0;
                            try
                            {
                                enumKey = int.Parse(val.ToString());
                            }
                            catch
                            {
                                throw new Exception("默认值错误:" + attr.Key + " = " + val.ToString());
                            }

                            BP.Sys.SysEnum enEnum = new BP.Sys.SysEnum(attr.UIBindKey, "CH", enumKey);

                            //DDL ddl = new DDL(attr,text,en.Lab,false);
                            DDL ddl = new DDL();
                            ddl.Items.Add(new ListItem(enEnum.Lab, val.ToString()));
                            ddl.Items[0].Selected = true;
                            ddl.Enabled           = false;
                            ddl.ID = "DDL_" + attr.Key;

                            this.AddContral(attr.Desc, ddl, true);
                        }
                        else
                        {
                            /* 如果是 ens 类型 */
                            Entities ens = ClassFactory.GetEns(attr.UIBindKey);
                            Entity   en1 = ens.GetNewEntity;
                            en1.SetValByKey(attr.UIRefKeyValue, val.ToString());
                            string lab = "";
                            try
                            {
                                en1.Retrieve();
                                lab = en1.GetValStringByKey(attr.UIRefKeyText);
                            }
                            catch
                            {
                                if (SystemConfig.IsDebug == false)
                                {
                                    lab = "" + val.ToString();
                                }
                                else
                                {
                                    lab = "" + val.ToString();
                                }
                            }

                            DDL ddl = new DDL(attr, val.ToString(), lab, false,
                                              this.Page.Request.ApplicationPath);

                            ddl.ID = "DDL_" + attr.Key;
                            this.AddContral(attr.Desc, ddl, true);
                        }
                    }
                    else
                    {
                        /* 可以使用的情况. */
                        DDL ddl1 = new DDL(attr, val.ToString(), "enumLab", true, this.Page.Request.ApplicationPath);
                        ddl1.ID = "DDL_" + attr.Key;
                        ddl1.Attributes["onchange"] = "Change('DDL_" + attr.Key + "')";
                        this.AddContral(attr.Desc, ddl1, true);
                    }
                }
                else if (attr.UIContralType == UIContralType.RadioBtn)
                {
                    //					Sys.SysEnums enums = new BP.Sys.SysEnums(attr.UIBindKey);
                    //					foreach(SysEnum en in enums)
                    //					{
                    //						return ;
                    //					}
                }

                if (isLeft == false)
                {
                    isAddTR = false;
                    this.AddTREnd();
                }

                isLeft = !isLeft;
            } // 结束循环.
            //补充TR
            if (isAddTR == true)
            {
                this.AddTD("");
                this.AddTD("");
                this.AddTREnd();
            }
            this.Add("</TABLE>");
        }
Exemplo n.º 15
0
        public void TableMode()
        {
            this.Pub2.AddTable();
            this.Pub2.AddTR();
            this.Pub2.AddTDTitle("IDX");
            this.Pub2.AddTDTitle("日期时间");
            this.Pub2.AddTDTitle("从节点");
            this.Pub2.AddTDTitle("人员");
            this.Pub2.AddTDTitle("到节点");
            this.Pub2.AddTDTitle("人员");
            this.Pub2.AddTDTitle("活动");
            this.Pub2.AddTDTitle("信息");
            this.Pub2.AddTDTitle("表单");
            this.Pub2.AddTDTitle("执行人");
            this.Pub2.AddTREnd();

            string sqlOfWhere1 = "";

            string dbStr = BP.Sys.SystemConfig.AppCenterDBVarStr;
            Paras  prs   = new Paras();

            if (this.FID == 0)
            {
                sqlOfWhere1 = " WHERE (FID=" + dbStr + "WorkID11 OR WorkID=" + dbStr + "WorkID12 )  ";
                prs.Add("WorkID11", this.WorkID);
                prs.Add("WorkID12", this.WorkID);
            }
            else
            {
                sqlOfWhere1 = " WHERE (FID=" + dbStr + "FID11 OR WorkID=" + dbStr + "FID12 ) ";
                prs.Add("FID11", this.FID);
                prs.Add("FID12", this.FID);
            }

            string sql = "";

            sql     = "SELECT MyPK,ActionType,ActionTypeText,FID,WorkID,NDFrom,NDFromT,NDTo,NDToT,EmpFrom,EmpFromT,EmpTo,EmpToT,RDT,WorkTimeSpan,Msg,NodeData,Exer,Tag FROM ND" + int.Parse(this.FK_Flow) + "Track " + sqlOfWhere1;
            prs.SQL = sql;
            DataTable dt = null;

            try
            {
                dt = DBAccess.RunSQLReturnTable(prs);
            }
            catch
            {
                // 处理track表.
                Track.CreateOrRepairTrackTable(this.FK_Flow);
                dt = DBAccess.RunSQLReturnTable(prs);
            }

            DataView dv = dt.DefaultView;

            dv.Sort = "RDT";

            int idx = 1;

            foreach (DataRowView dr in dv)
            {
                ActionType at = (ActionType)int.Parse(dr[TrackAttr.ActionType].ToString());
                if (at != ActionType.WorkCheck)
                {
                    continue;
                }

                this.Pub2.AddTR();
                this.Pub2.AddTDIdx(idx++);
                DateTime dtt = DataType.ParseSysDateTime2DateTime(dr[TrackAttr.RDT].ToString());
                this.Pub2.AddTD(dtt.ToString("yyyy年MM月dd日HH:mm"));

                this.Pub2.AddTD(dr[TrackAttr.NDFromT].ToString());


                this.Pub2.AddTD(dr[TrackAttr.EmpFromT].ToString());
                this.Pub2.AddTD(dr[TrackAttr.NDToT].ToString());
                this.Pub2.AddTD(dr[TrackAttr.EmpToT].ToString());

                this.Pub2.AddTD("<img src='../../Img/Action/" + at.ToString() + ".png' class='ActionType' border=0/>" + BP.WF.Track.GetActionTypeT(at));

                // 删除信息
                string tag = dr[TrackAttr.Tag].ToString();
                string msg = dr[TrackAttr.Msg].ToString();
                switch (at)
                {
                case ActionType.CallChildenFlow:     //被调用父流程吊起。
                    tag = dr[TrackAttr.Tag].ToString();
                    if (string.IsNullOrEmpty(tag) == false)
                    {
                        AtPara ap = new AtPara(tag);
                        this.Pub2.AddTD("class=TD", "<a target=b" + ap.GetValStrByKey("PWorkID") + " href='Track.aspx?WorkID=" + ap.GetValStrByKey("PWorkID") + "&FK_Flow=" + ap.GetValStrByKey("PFlowNo") + "' >" + msg + "</a>");
                    }
                    else
                    {
                        this.Pub2.AddTD("class=TD", msg);
                    }
                    break;

                case ActionType.StartChildenFlow:     //吊起子流程。
                    tag = dr[TrackAttr.Tag].ToString();
                    if (string.IsNullOrEmpty(tag) == false)
                    {
                        AtPara ap = new AtPara(tag);
                        this.Pub2.AddTD("class=TD", "<a target=b" + ap.GetValStrByKey("CWorkID") + " href='Track.aspx?WorkID=" + ap.GetValStrByKey("CWorkID") + "&FK_Flow=" + ap.GetValStrByKey("CFlowNo") + "' >" + msg + "</a>");
                    }
                    else
                    {
                        this.Pub2.AddTD("class=TD", msg);
                    }
                    break;

                default:
                    this.Pub2.AddTD(DataType.ParseText2Html(msg));
                    break;
                }

                this.Pub2.AddTD("<a href=\"javascript:WinOpen('" + BP.WF.Glo.CCFlowAppPath + "WF/WFRpt.aspx?WorkID=" + dr[TrackAttr.WorkID].ToString() + "&FK_Flow=" + this.FK_Flow + "&FK_Node=" + dr[TrackAttr.NDTo].ToString() + "&DoType=View&MyPK=" + dr[TrackAttr.MyPK].ToString() + "','" + dr[TrackAttr.MyPK].ToString() + "');\">表单</a>");
                this.Pub2.AddTD(dr[TrackAttr.Exer].ToString());
                this.Pub2.AddTREnd();
            }
            this.Pub2.AddTableEnd();

            if (this.CCID != null)
            {
                CCList cl = new CCList();
                cl.MyPK = this.CCID;
                cl.RetrieveFromDBSources();
                this.Pub2.AddFieldSet(cl.Title);
                this.Pub2.Add("抄送人:" + cl.Rec + ", 抄送日期:" + cl.RDT);
                this.Pub2.AddHR();
                this.Pub2.Add(cl.DocHtml);
                this.Pub2.AddFieldSetEnd();
                if (cl.HisSta == CCSta.UnRead)
                {
                    cl.HisSta = CCSta.Read;
                    cl.Update();
                }
            }
        }
Exemplo n.º 16
0
        /// <summary>
        /// 执行事件,事件标记是 EventList.
        /// </summary>
        /// <param name="dotype">执行类型</param>
        /// <param name="en">数据实体</param>
        /// <param name="atPara">特殊的参数格式@key=value 方式.</param>
        /// <returns></returns>
        private string _DoEventNode(string dotype, Entity en, string atPara)
        {
            if (this.Count == 0)
            {
                return(null);
            }

            FrmEvent nev = this.GetEntityByKey(FrmEventAttr.FK_Event, dotype) as FrmEvent;

            if (nev == null || nev.HisDoType == EventDoType.Disable)
            {
                return(null);
            }

            #region 执行的是业务单元.
            if (nev.HisDoType == EventDoType.BuessUnit)
            {
                /* 获得业务单元,开始执行他 */
                BuessUnitBase enBuesss = BP.Sys.Glo.GetBuessUnitEntityByEnName(nev.DoDoc);
                enBuesss.WorkID = Int64.Parse(en.PKVal.ToString());
                return(enBuesss.DoIt());
            }
            #endregion 执行的是业务单元.


            string doc = nev.DoDoc.Trim();
            if ((doc == null || doc == "") && nev.HisDoType != EventDoType.SpecClass)   //edited by liuxc,2016-01-16,执行DLL文件不需要判断doc为空
            {
                return(null);
            }

            #region 处理执行内容
            Attrs  attrs  = en.EnMap.Attrs;
            string MsgOK  = "";
            string MsgErr = "";
            foreach (Attr attr in attrs)
            {
                if (doc.Contains("@" + attr.Key) == false)
                {
                    break;
                }
                if (attr.MyDataType == DataType.AppString ||
                    attr.MyDataType == DataType.AppDateTime ||
                    attr.MyDataType == DataType.AppDate)
                {
                    doc = doc.Replace("@" + attr.Key, "'" + en.GetValStrByKey(attr.Key) + "'");
                }
                else
                {
                    doc = doc.Replace("@" + attr.Key, en.GetValStrByKey(attr.Key));
                }
            }

            doc = doc.Replace("~", "'");
            doc = doc.Replace("@WebUser.No", BP.Web.WebUser.No);
            doc = doc.Replace("@WebUser.Name", BP.Web.WebUser.Name);
            doc = doc.Replace("@WebUser.FK_Dept", BP.Web.WebUser.FK_Dept);
            doc = doc.Replace("@FK_Node", nev.FK_MapData.Replace("ND", ""));
            doc = doc.Replace("@FK_MapData", nev.FK_MapData);
            doc = doc.Replace("@WorkID", en.GetValStrByKey("OID", "@WorkID"));

            //SDK表单上服务器地址,应用到使用ccflow的时候使用的是sdk表单,该表单会存储在其他的服务器上.
            doc = doc.Replace("@SDKFromServHost", SystemConfig.AppSettings["SDKFromServHost"]);

            if (doc.Contains("@") == true)
            {
                if (System.Web.HttpContext.Current != null)
                {
                    /*如果是 bs 系统, 有可能参数来自于url ,就用url的参数替换它们 .*/
                    string url = BP.Sys.Glo.Request.RawUrl;
                    if (url.IndexOf('?') != -1)
                    {
                        url = url.Substring(url.IndexOf('?')).TrimStart('?');
                    }

                    string[] paras = url.Split('&');
                    foreach (string s in paras)
                    {
                        string[] mys = s.Split('=');

                        if (doc.Contains("@" + mys[0]) == false)
                        {
                            continue;
                        }

                        doc = doc.Replace("@" + mys[0], mys[1]);
                    }
                }
            }

            if (nev.HisDoType == EventDoType.URLOfSelf)
            {
                if (doc.Contains("?") == false)
                {
                    doc += "?1=2";
                }

                doc += "&UserNo=" + WebUser.No;
                doc += "&SID=" + WebUser.SID;
                doc += "&FK_Dept=" + WebUser.FK_Dept;
                // doc += "&FK_Unit=" + WebUser.FK_Unit;
                doc += "&OID=" + en.PKVal;

                if (SystemConfig.IsBSsystem)
                {
                    /*是bs系统,并且是url参数执行类型.*/
                    string url = BP.Sys.Glo.Request.RawUrl;

                    if (url.IndexOf('?') != -1)
                    {
                        url = url.Substring(url.IndexOf('?')).TrimStart('?');
                    }

                    string[] paras = url.Split('&');
                    foreach (string s in paras)
                    {
                        string[] mys = s.Split('=');

                        if (doc.Contains(mys[0] + "="))
                        {
                            continue;
                        }

                        doc += "&" + s;
                    }

                    doc = doc.Replace("&?", "&");
                }

                if (SystemConfig.IsBSsystem == false)
                {
                    /*非bs模式下调用,比如在cs模式下调用它,它就取不到参数. */
                }

                if (doc.StartsWith("http") == false)
                {
                    /*如果没有绝对路径 */
                    if (SystemConfig.IsBSsystem)
                    {
                        /*在cs模式下自动获取*/
                        string host = BP.Sys.Glo.Request.Url.Host;
                        if (doc.Contains("@AppPath"))
                        {
                            doc = doc.Replace("@AppPath", "http://" + host + BP.Sys.Glo.Request.ApplicationPath);
                        }
                        else
                        {
                            doc = "http://" + BP.Sys.Glo.Request.Url.Authority + doc;
                        }
                    }

                    if (SystemConfig.IsBSsystem == false)
                    {
                        /*在cs模式下它的baseurl 从web.config中获取.*/
                        string cfgBaseUrl = SystemConfig.HostURL;
                        if (DataType.IsNullOrEmpty(cfgBaseUrl))
                        {
                            string err = "调用url失败:没有在web.config中配置BaseUrl,导致url事件不能被执行.";
                            Log.DefaultLogWriteLineError(err);
                            throw new Exception(err);
                        }
                        doc = cfgBaseUrl + doc;
                    }
                }

                //增加上系统约定的参数.
                doc += "&EntityName=" + en.ToString() + "&EntityPK=" + en.PK + "&EntityPKVal=" + en.PKVal + "&FK_Event=" + nev.MyPK;
            }
            #endregion 处理执行内容

            if (atPara != null && doc.Contains("@") == true)
            {
                AtPara ap = new AtPara(atPara);
                foreach (string s in ap.HisHT.Keys)
                {
                    doc = doc.Replace("@" + s, ap.GetValStrByKey(s));
                }
            }

            if (dotype == FrmEventList.FrmLoadBefore)
            {
                en.Retrieve(); /*如果不执行,就会造成实体的数据与查询的数据不一致.*/
            }
            switch (nev.HisDoType)
            {
            case EventDoType.SP:
            case EventDoType.SQL:
                try
                {
                    // 允许执行带有GO的sql.
                    DBAccess.RunSQLs(doc);
                    return(nev.MsgOK(en));
                }
                catch (Exception ex)
                {
                    throw new Exception(nev.MsgError(en) + " Error:" + ex.Message);
                }
                break;

            case EventDoType.URLOfSelf:
                string myURL = doc.Clone() as string;
                if (myURL.Contains("http") == false)
                {
                    if (SystemConfig.IsBSsystem)
                    {
                        string host = BP.Sys.Glo.Request.Url.Host;
                        if (myURL.Contains("@AppPath"))
                        {
                            myURL = myURL.Replace("@AppPath", "http://" + host + BP.Sys.Glo.Request.ApplicationPath);
                        }
                        else
                        {
                            myURL = "http://" + BP.Sys.Glo.Request.Url.Authority + myURL;
                        }
                    }
                    else
                    {
                        string cfgBaseUrl = SystemConfig.HostURL;
                        if (DataType.IsNullOrEmpty(cfgBaseUrl))
                        {
                            string err = "调用url失败:没有在web.config中配置BaseUrl,导致url事件不能被执行.";
                            Log.DefaultLogWriteLineError(err);
                            throw new Exception(err);
                        }
                        myURL = cfgBaseUrl + myURL;
                    }
                }
                myURL = myURL.Replace("@SDKFromServHost", SystemConfig.AppSettings["SDKFromServHost"]);

                if (myURL.Contains("&FID=") == false && en.Row.ContainsKey("FID") == true)
                {
                    string str = en.Row["FID"].ToString();
                    myURL = myURL + "&FID=" + str;
                }

                if (myURL.Contains("&FK_Flow=") == false && en.Row.ContainsKey("FK_Flow") == true)
                {
                    string str = en.Row["FK_Flow"].ToString();
                    myURL = myURL + "&FK_Flow=" + str;
                }

                if (myURL.Contains("&WorkID=") == false && en.Row.ContainsKey("WorkID") == true)
                {
                    string str = en.Row["WorkID"].ToString();
                    myURL = myURL + "&WorkID=" + str;
                }

                try
                {
                    Encoding encode = System.Text.Encoding.GetEncoding("gb2312");
                    string   text   = DataType.ReadURLContext(myURL, 600000, encode);
                    if (text == null)
                    {
                        throw new Exception("@流程设计错误,执行的url错误:" + myURL + ", 返回为null, 请检查url设置是否正确。提示:您可以copy出来此url放到浏览器里看看是否被正确执行。");
                    }

                    if (text != null &&
                        text.Length > 7 &&
                        text.Substring(0, 7).ToLower().Contains("err"))
                    {
                        throw new Exception(text);
                    }

                    if (text == null || text.Trim() == "")
                    {
                        return(null);
                    }
                    return(text);
                }
                catch (Exception ex)
                {
                    throw new Exception("@" + nev.MsgError(en) + " Error:" + ex.Message);
                }
                break;

            case EventDoType.EventBase:     //执行事件类.
                // 获取事件类.
                string           evName = doc.Clone() as string;
                BP.Sys.EventBase ev     = null;
                try
                {
                    ev = BP.En.ClassFactory.GetEventBase(evName);
                }
                catch (Exception ex)
                {
                    throw new Exception("@事件名称:" + evName + "拼写错误,或者系统不存在。说明:事件所在的类库必须是以BP.开头,并且类库的BP.xxx.dll。");
                }

                //开始执行.
                try
                {
                    #region 处理整理参数.
                    Row r = en.Row;
                    try
                    {
                        //系统参数.
                        r.Add("FK_MapData", en.ClassID);
                    }
                    catch
                    {
                        r["FK_MapData"] = en.ClassID;
                    }

                    try
                    {
                        r.Add("EventType", nev.FK_Event);
                    }
                    catch
                    {
                        r["EventType"] = nev.FK_Event;
                    }

                    if (atPara != null)
                    {
                        AtPara ap = new AtPara(atPara);
                        foreach (string s in ap.HisHT.Keys)
                        {
                            try
                            {
                                r.Add(s, ap.GetValStrByKey(s));
                            }
                            catch
                            {
                                r[s] = ap.GetValStrByKey(s);
                            }
                        }
                    }

                    if (SystemConfig.IsBSsystem == true)
                    {
                        /*如果是bs系统, 就加入外部url的变量.*/
                        foreach (string key in BP.Sys.Glo.Request.QueryString)
                        {
                            string val = BP.Sys.Glo.Request.QueryString[key];
                            try
                            {
                                r.Add(key, val);
                            }
                            catch
                            {
                                r[key] = val;
                            }
                        }
                    }
                    #endregion 处理整理参数.

                    ev.SysPara = r;
                    ev.HisEn   = en;
                    ev.Do();
                    return(ev.SucessInfo);
                }
                catch (Exception ex)
                {
                    throw new Exception("@执行事件(" + ev.Title + ")期间出现错误:" + ex.Message);
                }
                break;

            case EventDoType.WSOfSelf:     //执行webservices.. 为石油修改.
                string[]  strs   = doc.Split('@');
                string    url    = "";
                string    method = "";
                Hashtable paras  = new Hashtable();
                foreach (string str in strs)
                {
                    if (str.Contains("=") && str.Contains("Url"))
                    {
                        url = str.Split('=')[2];
                        continue;
                    }

                    if (str.Contains("=") && str.Contains("Method"))
                    {
                        method = str.Split('=')[2];
                        continue;
                    }

                    //处理参数.
                    string[] paraKeys = str.Split(',');

                    if (paraKeys[3] == "Int")
                    {
                        paras.Add(paraKeys[0], int.Parse(paraKeys[1]));
                    }

                    if (paraKeys[3] == "String")
                    {
                        paras.Add(paraKeys[0], paraKeys[1]);
                    }

                    if (paraKeys[3] == "Float")
                    {
                        paras.Add(paraKeys[0], float.Parse(paraKeys[1]));
                    }

                    if (paraKeys[3] == "Double")
                    {
                        paras.Add(paraKeys[0], double.Parse(paraKeys[1]));
                    }
                }
                return(null);

                //开始执行webserives.
                break;

            case EventDoType.SpecClass:
                #region     //执行dll文件中指定类的指定方法,added by liuxc,2016-01-16
                string evdll    = nev.MonthedDLL;
                string evclass  = nev.MonthedClass;
                string evmethod = nev.MonthedName;
                string evparams = nev.MonthedParas;

                if (string.IsNullOrWhiteSpace(evdll) || !System.IO.File.Exists(evdll))
                {
                    throw new Exception("@DLL文件【MonthedDLL】“" + (evdll ?? string.Empty) + "”设置不正确,请重新设置!");
                }

                Assembly abl = Assembly.LoadFrom(evdll);

                //判断类是否是静态类
                Type type = abl.GetType(evclass, false);

                if (type == null)
                {
                    throw new Exception(@"@DLL文件【MonthedDLL】“" + evdll + "”中的类名【MonthedClass】“" +
                                        (evclass ?? string.Empty) + "”设置不正确,未检索到此类,请重新设置!");
                }

                //方法
                if (string.IsNullOrWhiteSpace(evmethod))
                {
                    throw new Exception(@"@DLL文件【MonthedDLL】“" + evdll + "”中类【MonthedClass】“" +
                                        evclass + "”的方法名【MonthedName】不能为空,请重新设置!");
                }

                MethodInfo                  md  = null;                              //当前方法
                ParameterInfo[]             pis = null;                              //方法的参数集合
                Dictionary <string, string> pss = new Dictionary <string, string>(); //参数名,参数值类型名称字典,如:Name,String
                string mdName = evmethod.Split('(')[0];                              //方法名称

                //获取method对象
                if (mdName.Length == evmethod.Length - 2)
                {
                    md = type.GetMethod(mdName);
                }
                else
                {
                    string[] pssArr = null;

                    //获取设置里的参数信息
                    foreach (string pstr in evmethod.Substring(mdName.Length + 1, evmethod.Length - mdName.Length - 2).Split(','))
                    {
                        pssArr = pstr.Split(' ');
                        pss.Add(pssArr[1], pssArr[0]);
                    }

                    //与设置里的参数信息对比,取得MethodInfo对象
                    foreach (MethodInfo m in type.GetMethods())
                    {
                        if (m.Name != mdName)
                        {
                            continue;
                        }

                        pis = m.GetParameters();
                        bool isOK = true;
                        int  idx  = 0;

                        foreach (KeyValuePair <string, string> ps in pss)
                        {
                            if (pis[idx].Name != ps.Key || pis[idx].ParameterType.ToString()
                                .Replace("System.IO.", "")
                                .Replace("System.", "")
                                .Replace("System.Collections.Generic.", "")
                                .Replace("System.Collections.", "") != ps.Value)
                            {
                                isOK = false;
                                break;
                            }

                            idx++;
                        }

                        if (isOK)
                        {
                            md = m;
                            break;
                        }
                    }
                }

                if (md == null)
                {
                    throw new Exception(@"@DLL文件【MonthedDLL】“" + evdll + "”中类【MonthedClass】“" +
                                        evclass + "”的方法名【MonthedName】“" + evmethod + "”设置不正确,未检索到此方法,请重新设置!");
                }

                //处理参数
                object[] pvs = new object[pss.Count];       //invoke,传递的paramaters参数,数组中的项顺序与方法参数顺序一致

                if (pss.Count > 0)
                {
                    if (string.IsNullOrWhiteSpace(evparams))
                    {
                        throw new Exception(@"@DLL文件【MonthedDLL】“" + evdll + "”中类【MonthedClass】“" +
                                            evclass + "”的方法【MonthedName】“" + evmethod + "”的参数【MonthedParas】不能为空,请重新设置!");
                    }

                    Dictionary <string, string> pds = new Dictionary <string, string>();    //MonthedParas中保存的参数信息集合,格式如:title,@Title
                    int      idx    = 0;
                    int      pidx   = -1;
                    string[] pdsArr = evparams.Split(';');
                    string   val;

                    //将参数中的名称与值分开
                    foreach (string p in pdsArr)
                    {
                        pidx = p.IndexOf('=');
                        if (pidx == -1)
                        {
                            continue;
                        }

                        pds.Add(p.Substring(0, pidx), p.Substring(pidx + 1));
                    }

                    foreach (KeyValuePair <string, string> ps in pss)
                    {
                        if (!pds.ContainsKey(ps.Key))
                        {
                            //设置中没有此参数的值信息,则将值赋为null
                            pvs[idx] = null;
                        }
                        else
                        {
                            val = pds[ps.Key];

                            foreach (BP.En.Attr attr in en.EnMap.Attrs)
                            {
                                if (pds[ps.Key] == "`" + attr.Key + "`")
                                {
                                    //表示此参数与该attr的值一致,类型也一致
                                    pvs[idx] = en.Row[attr.Key];
                                    break;
                                }

                                //替换@属性
                                val = val.Replace("`" + attr.Key + "`", (en.Row[attr.Key] ?? string.Empty).ToString());
                            }

                            //转换参数类型,从字符串转换到参数的实际类型,NOTE:此处只列出了简单类型的转换,其他类型暂未考虑
                            switch (ps.Value)
                            {
                            case "String":
                                pvs[idx] = val;
                                break;

                            case "Int32":
                                pvs[idx] = int.Parse(val);
                                break;

                            case "Int64":
                                pvs[idx] = long.Parse(val);
                                break;

                            case "Double":
                                pvs[idx] = double.Parse(val);
                                break;

                            case "Single":
                                pvs[idx] = float.Parse(val);
                                break;

                            case "Decimal":
                                pvs[idx] = decimal.Parse(val);
                                break;

                            case "DateTime":
                                pvs[idx] = DateTime.Parse(val);
                                break;

                            default:
                                pvs[idx] = val;
                                break;
                            }
                        }

                        idx++;
                    }
                }

                if (type.IsSealed && type.IsAbstract)
                {
                    //静态类
                    return((md.Invoke(null, pvs) ?? string.Empty).ToString());
                }

                //非静态类
                //虚类必须被重写,不能直接使用
                if (type.IsAbstract)
                {
                    return(null);
                }

                //静态方法
                if (md.IsStatic)
                {
                    return((md.Invoke(null, pvs) ?? string.Empty).ToString());
                }

                //非静态方法
                return((md.Invoke(abl.CreateInstance(evclass), pvs) ?? string.Empty).ToString());

                #endregion
            default:
                throw new Exception("@no such way." + nev.HisDoType.ToString());
            }
        }
        public QueryObject InitQueryObjectByEns(Entities ens, bool IsShowSearchKey, DTSearchWay dw, string dtKey, Attrs attrs, AttrsOfSearch attrsOfSearch, AttrSearchs searchAttrs)
        {
            QueryObject qo = new QueryObject(ens);

            #region 关键字
            string keyVal = "";
            //Attrs attrs = en.EnMap.Attrs;
            if (IsShowSearchKey)
            {
                TB keyTB = this.GetTBByID("TB_Key");
                if (keyTB != null)
                {
                    keyVal = keyTB.Text.Trim();
                }
                else
                {
                    UserRegedit ur = new UserRegedit();
                    //ur.MyPK = WebUser.No + ens.GetNewEntity.ClassID + "_SearchAttrs";
                    QueryObject urObj = new QueryObject(ur);
                    urObj.AddWhere("MyPK", WebUser.No + ens.GetNewEntity.ClassID + "_SearchAttrs");
                    urObj.DoQuery();

                    keyVal = ur.SearchKey;
                }
                this.Page.Session["SKey"] = keyVal;
            }

            if (keyVal.Length >= 1)
            {
                Attr attrPK = new Attr();
                foreach (Attr attr in attrs)
                {
                    if (attr.IsPK)
                    {
                        attrPK = attr;
                        break;
                    }
                }
                int i = 0;
                foreach (Attr attr in attrs)
                {
                    switch (attr.MyFieldType)
                    {
                    case FieldType.Enum:
                    case FieldType.FK:
                    case FieldType.PKFK:
                        continue;

                    default:
                        break;
                    }


                    if (attr.MyDataType != DataType.AppString)
                    {
                        continue;
                    }

                    if (attr.MyFieldType == FieldType.RefText)
                    {
                        continue;
                    }

                    if (attr.Key == "FK_Dept")
                    {
                        continue;
                    }

                    i++;
                    if (i == 1)
                    {
                        /* 第一次进来。 */
                        qo.addLeftBracket();
                        switch (SystemConfig.AppCenterDBType)
                        {
                        case BP.DA.DBType.Oracle:
                        case BP.DA.DBType.Informix:
                            qo.AddWhere(attr.Key, " LIKE ", " '%'||" + SystemConfig.AppCenterDBVarStr + "SKey||'%'");
                            break;

                        case BP.DA.DBType.MySQL:
                            qo.AddWhere(attr.Key, " LIKE ", "CONCAT('%'," + SystemConfig.AppCenterDBVarStr + "SKey,'%')");
                            break;

                        default:
                            qo.AddWhere(attr.Key, " LIKE ", " '%'+" + SystemConfig.AppCenterDBVarStr + "SKey+'%'");
                            break;
                        }
                        continue;
                    }
                    qo.addOr();

                    switch (SystemConfig.AppCenterDBType)
                    {
                    case BP.DA.DBType.Oracle:
                    case BP.DA.DBType.Informix:
                        qo.AddWhere(attr.Key, " LIKE ", "'%'||" + SystemConfig.AppCenterDBVarStr + "SKey||'%'");
                        break;

                    case BP.DA.DBType.MySQL:
                        qo.AddWhere(attr.Key, " LIKE ", "CONCAT('%'," + SystemConfig.AppCenterDBVarStr + "SKey,'%')");
                        break;

                    default:
                        qo.AddWhere(attr.Key, " LIKE ", "'%'+" + SystemConfig.AppCenterDBVarStr + "SKey+'%'");
                        break;
                    }
                }
                qo.MyParas.Add("SKey", keyVal);
                qo.addRightBracket();
            }
            else
            {
                qo.addLeftBracket();
                qo.AddWhere("abc", "all");
                qo.addRightBracket();
            }
            #endregion

            #region 普通属性
            string opkey = ""; // 操作符号。
            foreach (AttrOfSearch attr in attrsOfSearch)
            {
                if (attr.IsHidden)
                {
                    qo.addAnd();
                    qo.addLeftBracket();
                    qo.AddWhere(attr.RefAttrKey, attr.DefaultSymbol, attr.DefaultValRun);
                    qo.addRightBracket();
                    continue;
                }

                if (attr.SymbolEnable == true)
                {
                    opkey = this.GetDDLByKey("DDL_" + attr.Key).SelectedItemStringVal;
                    if (opkey == "all")
                    {
                        continue;
                    }
                }
                else
                {
                    opkey = attr.DefaultSymbol;
                }

                qo.addAnd();
                qo.addLeftBracket();

                if (attr.DefaultVal.Length >= 8)
                {
                    string date = "2005-09-01";
                    try
                    {
                        /* 就可能是年月日。 */
                        string y = this.GetDDLByKey("DDL_" + attr.Key + "_Year").SelectedItemStringVal;
                        string m = this.GetDDLByKey("DDL_" + attr.Key + "_Month").SelectedItemStringVal;
                        string d = this.GetDDLByKey("DDL_" + attr.Key + "_Day").SelectedItemStringVal;
                        date = y + "-" + m + "-" + d;

                        if (opkey == "<=")
                        {
                            DateTime dt = DataType.ParseSysDate2DateTime(date).AddDays(1);
                            date = dt.ToString(DataType.SysDataFormat);
                        }
                    }
                    catch
                    {
                    }

                    qo.AddWhere(attr.RefAttrKey, opkey, date);
                }
                else
                {
                    qo.AddWhere(attr.RefAttrKey, opkey, this.GetTBByID("TB_" + attr.Key).Text);
                }
                qo.addRightBracket();
            }
            #endregion

            #region 外键
            foreach (AttrSearch attr1 in searchAttrs)
            {
                Attr attr = attr1.HisAttr;

                if (attr.MyFieldType == FieldType.RefText)
                {
                    continue;
                }


                DDL ddl = this.GetDDLByKey("DDL_" + attr.Key);
                if (ddl.Items.Count == 0)
                {
                    continue;
                }

                string selectVal = ddl.SelectedItemStringVal;
                if (selectVal == "all")
                {
                    continue;
                }

                if (selectVal == "mvals")
                {
                    UserRegedit sUr = new UserRegedit();
                    sUr.MyPK = WebUser.No + this.EnsName + "_SearchAttrs";
                    sUr.RetrieveFromDBSources();

                    /* 如果是多选值 */
                    string cfgVal = sUr.MVals;
                    AtPara ap     = new AtPara(cfgVal);
                    string instr  = ap.GetValStrByKey(attr.Key);
                    if (instr == null || instr == "")
                    {
                        if (attr.Key == "FK_Dept" || attr.Key == "FK_Unit")
                        {
                            if (attr.Key == "FK_Dept")
                            {
                                selectVal         = WebUser.FK_Dept;
                                ddl.SelectedIndex = 0;
                            }

                            //if (attr.Key == "FK_Unit")
                            //{
                            //    selectVal = WebUser.FK_Unit;
                            //    ddl.SelectedIndex = 0;
                            //}
                        }
                        else
                        {
                            continue;
                        }
                    }
                    else
                    {
                        instr = instr.Replace("..", ".");
                        instr = instr.Replace(".", "','");
                        instr = instr.Substring(2);
                        instr = instr.Substring(0, instr.Length - 2);

                        qo.addAnd();
                        qo.addLeftBracket();
                        qo.AddWhereIn(attr.Key, "(" + instr + ")");
                        qo.addRightBracket();
                        continue;
                    }
                }


                qo.addAnd();
                qo.addLeftBracket();

                if (attr.UIBindKey == "BP.Port.Depts" || attr.UIBindKey == "BP.Port.Units")  //判断特殊情况。
                {
                    qo.AddWhere(attr.Key, " LIKE ", selectVal + "%");
                }
                else
                {
                    qo.AddWhere(attr.Key, selectVal);
                }

                //qo.AddWhere(attr.Key,this.GetDDLByKey("DDL_"+attr.Key).SelectedItemStringVal ) ;
                qo.addRightBracket();
            }
            #endregion .

            if (dw != DTSearchWay.None)
            {
                string dtFrom = this.GetTBByID("TB_S_From").Text.Trim();
                string dtTo   = this.GetTBByID("TB_S_To").Text.Trim();
                if (dw == DTSearchWay.ByDate)
                {
                    qo.addAnd();
                    qo.addLeftBracket();
                    qo.SQL = dtKey + " >= '" + dtFrom + " 01:01'";
                    qo.addAnd();
                    qo.SQL = dtKey + " <= '" + dtTo + " 23:59'";
                    qo.addRightBracket();

                    //qo.AddWhere(dtKey, ">=", dtFrom+" 01:01");
                    //qo.addAnd();
                    //qo.AddWhere(dtKey, "<=", dtTo + " 23:59");
                    //qo.addRightBracket();
                }

                if (dw == DTSearchWay.ByDateTime)
                {
                    qo.addAnd();
                    qo.addLeftBracket();
                    qo.SQL = dtKey + " >= '" + dtFrom + "'";
                    qo.addAnd();
                    qo.SQL = dtKey + " <= '" + dtTo + "'";
                    qo.addRightBracket();

                    //qo.addAnd();
                    //qo.addLeftBracket();
                    //qo.AddWhere(dtKey, ">=", dtFrom);
                    //qo.addAnd();
                    //qo.AddWhere(dtKey, "<=", dtTo);
                    //qo.addRightBracket();
                }
            }

            //  throw new Exception(qo.SQL);
            return(qo);
        }
Exemplo n.º 18
0
        /// <summary>
        /// 时间轴
        /// </summary>
        /// <returns></returns>
        public string TimeBase_Init()
        {
            DataSet ds = new DataSet();

            //获取track.
            DataTable dt = BP.WF.Dev2Interface.DB_GenerTrackTable(this.FK_Flow, this.WorkID, this.FID);

            ds.Tables.Add(dt);


            #region  父子流程数据存储到这里.
            Hashtable ht = new Hashtable();
            foreach (DataRow dr in dt.Rows)
            {
                ActionType at = (ActionType)int.Parse(dr[TrackAttr.ActionType].ToString());

                string tag  = dr[TrackAttr.Tag].ToString();  //标识.
                string mypk = dr[TrackAttr.MyPK].ToString(); //主键.

                string msg = "";
                if (at == ActionType.CallChildenFlow)
                {
                    //被调用父流程吊起。
                    if (DataType.IsNullOrEmpty(tag) == false)
                    {
                        AtPara        ap    = new AtPara(tag);
                        GenerWorkFlow mygwf = new GenerWorkFlow();
                        mygwf.WorkID = ap.GetValInt64ByKey("PWorkID");
                        if (mygwf.RetrieveFromDBSources() == 1)
                        {
                            msg = "<p>操作员:{" + dr[TrackAttr.EmpFromT].ToString() + "}在当前节点上,被父流程{" + mygwf.FlowName + "},<a target=b" + ap.GetValStrByKey("PWorkID") + " href='Track.aspx?WorkID=" + ap.GetValStrByKey("PWorkID") + "&FK_Flow=" + ap.GetValStrByKey("PFlowNo") + "' >" + msg + "</a></p>";
                        }
                        else
                        {
                            msg = "<p>操作员:{" + dr[TrackAttr.EmpFromT].ToString() + "}在当前节点上,被父流程调用{" + mygwf.FlowName + "},但是该流程被删除了.</p>" + tag;
                        }

                        msg = "<a target=b" + ap.GetValStrByKey("PWorkID") + " href='Track.aspx?WorkID=" + ap.GetValStrByKey("PWorkID") + "&FK_Flow=" + ap.GetValStrByKey("PFlowNo") + "' >" + msg + "</a>";
                    }

                    //放入到ht里面.
                    ht.Add(mypk, msg);
                }

                if (at == ActionType.StartChildenFlow)
                {
                    if (DataType.IsNullOrEmpty(tag) == false)
                    {
                        if (tag.Contains("Sub"))
                        {
                            tag = tag.Replace("Sub", "C");
                        }

                        AtPara        ap    = new AtPara(tag);
                        GenerWorkFlow mygwf = new GenerWorkFlow();
                        mygwf.WorkID = ap.GetValInt64ByKey("CWorkID");
                        if (mygwf.RetrieveFromDBSources() == 1)
                        {
                            msg  = "<p>操作员:{" + dr[TrackAttr.EmpFromT].ToString() + "}在当前节点上调用了子流程{" + mygwf.FlowName + "}, <a target=b" + ap.GetValStrByKey("CWorkID") + " href='Track.aspx?WorkID=" + ap.GetValStrByKey("CWorkID") + "&FK_Flow=" + ap.GetValStrByKey("CFlowNo") + "' >" + msg + "</a></p>";
                            msg += "<p>当前子流程状态:{" + mygwf.WFStateText + "},运转到:{" + mygwf.NodeName + "},最后处理人{" + mygwf.TodoEmps + "},最后处理时间{" + mygwf.RDT + "}。</p>";
                        }
                        else
                        {
                            msg = "<p>操作员:{" + dr[TrackAttr.EmpFromT].ToString() + "}在当前节点上调用了子流程{" + mygwf.FlowName + "},但是该流程被删除了.</p>" + tag;
                        }
                    }

                    //放入到ht里面.
                    ht.Add(mypk, msg);
                }
            }
            #endregion

            //获取 WF_GenerWorkFlow
            GenerWorkFlow gwf = new GenerWorkFlow();
            gwf.WorkID = this.WorkID;
            gwf.RetrieveFromDBSources();
            ds.Tables.Add(gwf.ToDataTableField("WF_GenerWorkFlow"));

            if (gwf.WFState != WFState.Complete)
            {
                GenerWorkerLists gwls = new GenerWorkerLists();
                gwls.Retrieve(GenerWorkerListAttr.WorkID, this.WorkID);

                ds.Tables.Add(gwls.ToDataTableField("WF_GenerWorkerList"));
            }

            //把节点审核配置信息.
            FrmWorkCheck fwc = new FrmWorkCheck(gwf.FK_Node);
            ds.Tables.Add(fwc.ToDataTableField("FrmWorkCheck"));

            //返回结果.
            return(BP.Tools.Json.DataSetToJson(ds, false));
        }
Exemplo n.º 19
0
        public string Do(string doWhat, string para1, bool isLogin)
        {
            // 如果admin账户登陆时有错误发生,则返回错误信息
            var result = LetAdminLogin("CH", isLogin);

            if (string.IsNullOrEmpty(result) == false)
            {
                return(result);
            }

            switch (doWhat)
            {
            case "GenerFlowTemplete":
                Flow temp = new BP.WF.Flow(para1);
                return(null);

            case "GetFlowSorts":        //获取所有流程类型
                DataTable dtSorts = null;

                try
                {
                    dtSorts = BP.DA.DBAccess.RunSQLReturnTable("SELECT no,name FROM WF_FlowSort");
                }
                catch (Exception ex)
                {
                    return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, msg = ex.Message }));
                }

                return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = true, msg = string.Empty, data = dtSorts.Rows.Cast <DataRow>().Select(dr => new { Key = dr["no"].ToString(), Value = dr["name"].ToString() }) }));

            case "NewSameLevelFrmSort":     //创建同级别的 表单树 目录.
                SysFormTree frmSort = null;
                try
                {
                    var para = para1.Split(',');
                    frmSort = new SysFormTree(para[0]);
                    string sameNodeNo = frmSort.DoCreateSameLevelNode().No;
                    frmSort      = new SysFormTree(sameNodeNo);
                    frmSort.Name = para[1];
                    frmSort.Update();
                    return(null);
                }
                catch (Exception ex)
                {
                    return("Do Method NewFormSort Branch has a error , para:\t" + para1 + ex.Message);
                }

            case "NewSubLevelFrmSort":     //创建子级别的 表单树 目录.
                SysFormTree frmSortSub = null;
                try
                {
                    var para = para1.Split(',');
                    frmSortSub = new SysFormTree(para[0]);
                    string sameNodeNo = frmSortSub.DoCreateSubNode().No;
                    frmSortSub      = new SysFormTree(sameNodeNo);
                    frmSortSub.Name = para[1];
                    frmSortSub.Update();
                    return(null);
                }
                catch (Exception ex)
                {
                    return("Do Method NewSubLevelFrmSort Branch has a error , para:\t" + para1 + ex.Message);
                }

            case "NewSameLevelFlowSort":      //创建同级别的 流程树 目录.
                FlowSort fs = null;
                try
                {
                    var para = para1.Split(',');
                    fs = new FlowSort(para[0]);
                    string sameNodeNo = fs.DoCreateSameLevelNode().No;
                    fs      = new FlowSort(sameNodeNo);
                    fs.Name = para[1];
                    fs.Update();
                    return
                        (Newtonsoft.Json.JsonConvert.SerializeObject(
                             new { success = true, msg = string.Empty, data = fs.No }));
                }
                catch (Exception ex)
                {
                    BP.DA.Log.DefaultLogWriteLineError("Do Method NewSameLevelFlowSort Branch has a error , para:\t" + para1 + ex.Message);
                    return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, msg = ex.Message }));
                }

            case "NewSubFlowSort":     //创建子级别的 表单树 目录.
                try
                {
                    var      para        = para1.Split(',');
                    FlowSort fsSub       = new FlowSort(para[0]);
                    string   subNodeNo   = fsSub.DoCreateSubNode().No;
                    FlowSort subFlowSort = new FlowSort(subNodeNo);
                    subFlowSort.Name = para[1];
                    subFlowSort.Update();
                    return
                        (Newtonsoft.Json.JsonConvert.SerializeObject(
                             new { success = true, msg = string.Empty, data = subFlowSort.No }));
                }
                catch (Exception ex)
                {
                    BP.DA.Log.DefaultLogWriteLineError("Do Method NewSubFlowSort Branch has a error , para:\t" + ex.Message);
                    return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, msg = ex.Message }));
                }

            case "EditFlowSort":     //编辑表单树.
                try
                {
                    var para = para1.Split(',');
                    fs      = new FlowSort(para[0]);
                    fs.Name = para[1];
                    fs.Save();
                    return
                        (Newtonsoft.Json.JsonConvert.SerializeObject(
                             new { success = true, msg = string.Empty, data = fs.No }));
                }
                catch (Exception ex)
                {
                    BP.DA.Log.DefaultLogWriteLineError("Do Method EditFlowSort Branch has a error , para:\t" + para1 + ex.Message);
                    return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, msg = ex.Message }));
                }

            case "NewFlow":     //创建新流程.
                Flow fl = new Flow();
                try
                {
                    string[] ps = para1.Split(',');
                    if (ps.Length != 5)
                    {
                        throw new Exception("@创建流程参数错误");
                    }

                    string         fk_floSort    = ps[0];                            //类别编号.
                    string         flowName      = ps[1];                            // 流程名称.
                    DataStoreModel dataSaveModel = (DataStoreModel)int.Parse(ps[2]); //数据保存方式。
                    string         pTable        = ps[3];                            // 物理表名。
                    string         FlowMark      = ps[4];                            // 流程标记.

                    fl.DoNewFlow(fk_floSort, flowName, dataSaveModel, pTable, FlowMark);
                    return
                        (Newtonsoft.Json.JsonConvert.SerializeObject(
                             new { success = true, msg = string.Empty, data = new { no = fl.No, name = fl.Name } }));
                }
                catch (Exception ex)
                {
                    BP.DA.Log.DefaultLogWriteLineError("Do Method NewFlow Branch has a error , para:\t" + para1 + ex.Message);
                    return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, msg = ex.Message }));
                }

            case "DelFlow":     //删除流程.
                try
                {
                    return
                        (Newtonsoft.Json.JsonConvert.SerializeObject(
                             new { success = true, msg = WorkflowDefintionManager.DeleteFlowTemplete(para1) }));
                }
                catch (Exception ex)
                {
                    return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, msg = ex.Message }));
                }

            case "DelFlowSort":
                try
                {
                    FlowSort delfs = new FlowSort();
                    delfs.No = para1;
                    delfs.Delete();
                    return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = true }));
                }
                catch (Exception ex)
                {
                    BP.DA.Log.DefaultLogWriteLineError("Do Method DelFlowSort Branch has a error , para:\t" + para1 + ex.Message);
                    return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, msg = ex.Message }));
                }

            case "DelNode":
                try
                {
                    if (!string.IsNullOrEmpty(para1))
                    {
                        BP.WF.Node delNode = new BP.WF.Node(int.Parse(para1));
                        delNode.Delete();
                    }
                    else
                    {
                        throw new Exception("@参数错误:" + para1);
                    }
                }
                catch (Exception ex)
                {
                    return("err:" + ex.Message);
                }
                return(null);

            case "GetSettings":
                return(SystemConfig.AppSettings[para1]);

            case "SaveFlowFrm":      //保存独立表单.
                Entity en = null;
                try
                {
                    AtPara ap     = new AtPara(para1);
                    string enName = ap.GetValStrByKey("EnName");
                    string pk     = ap.GetValStrByKey("PKVal");
                    en = ClassFactory.GetEn(enName);
                    en.ResetDefaultVal();
                    if (en == null)
                    {
                        throw new Exception("无效的类名:" + enName);
                    }

                    if (string.IsNullOrEmpty(pk) == false)
                    {
                        en.PKVal = pk;
                        en.RetrieveFromDBSources();
                    }

                    foreach (string key in ap.HisHT.Keys)
                    {
                        if (key == "PKVal")
                        {
                            continue;
                        }
                        en.SetValByKey(key, ap.HisHT[key].ToString().Replace('^', '@'));
                    }
                    en.Save();
                    return(en.PKVal as string);
                }
                catch (Exception ex)
                {
                    if (en != null)
                    {
                        en.CheckPhysicsTable();
                    }
                    return("Error:" + ex.Message);
                }

            case "ChangeNodeType":
                var p = para1.Split(',');

                try
                {
                    if (p.Length != 3)
                    {
                        throw new Exception("@修改节点类型参数错误");
                    }

                    //var sql = "UPDATE WF_Node SET Icon='{0}' WHERE FK_Flow='{1}' AND NodeID='{2}'";
                    var sql = "UPDATE WF_Node SET RunModel={0} WHERE FK_Flow='{1}' AND NodeID={2}";
                    DBAccess.RunSQL(string.Format(sql, p[0], p[1], p[2]));
                    return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = true }));
                }
                catch (Exception ex)
                {
                    return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, msg = ex.Message }));
                }

            case "ChangeNodeIcon":
                p = para1.Split(',');

                try
                {
                    if (p.Length != 3)
                    {
                        throw new Exception("@修改节点图标参数错误");
                    }

                    var sql = "UPDATE WF_Node SET Icon='{0}' WHERE FK_Flow='{1}' AND NodeID={2}";
                    DBAccess.RunSQL(string.Format(sql, p[0], p[1], p[2]));
                    return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = true }));
                }
                catch (Exception ex)
                {
                    return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, msg = ex.Message }));
                }

            default:
                throw new Exception("@没有约定的执行标记:" + doWhat);
            }
        }
Exemplo n.º 20
0
        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            string url = e.Url.AbsoluteUri;

            this.statusStrip1.Text = url;
            string pageID = url.Substring(url.LastIndexOf('/') + 1);

            this.toolStripStatusLabel1.Text = url;

            if (pageID.IndexOf(".aspx") != -1)
            {
                pageID = pageID.Substring(0, pageID.IndexOf(".aspx"));
                url    = url.Substring(url.IndexOf(".aspx"));
                url    = url.Replace("?", "@");
                url    = url.Replace("&", "@");
                url    = url.Replace(".aspx", "");


                var para = new AtPara(url);
                switch (pageID)
                {
                case "DoClient":
                    try
                    {
                        switch (para.DoType)
                        {
                        case DoTypeConst.DoStartFlow:         //发起流程
                            this.DoStartFlow(para);
                            break;

                        case DoTypeConst.DoStartFlowByTemple:         //启动流程
                            this.DoStartFlowByTemple(para);
                            break;

                        case DoTypeConst.OpenFlow:         //打开流程
                            this.DoOpenFlow(para);
                            break;

                        case DoTypeConst.OpenDoc:
                            this.DoOpenDoc(para);
                            break;

                        case DoTypeConst.Send:         //执行发送
                            this.DoSend(para);
                            break;

                        case DoTypeConst.UnSend:            //发送完成后,用户真接在发送成功的界面上执行撤消发送,则执行此步

                            break;

                        case DoTypeConst.DelFlow:         //执行删除流程。
                            WebUser.FK_Flow = null;
                            WebUser.FK_Node = 0;
                            WebUser.WorkID  = 0;
                            this.Close();
                            break;

                        default:
                            break;
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("@错误:" + ex.Message + " PageID=" + pageID + "  DoType=" + para.DoType, "错误",
                                        MessageBoxButtons.OK, MessageBoxIcon.Error);
                        this.Close();
                    }
                    break;

                default:
                    break;
                }
            }
        }
Exemplo n.º 21
0
        public string Do(string doWhat, string para1, bool isLogin)
        {
            // 如果admin账户登陆时有错误发生,则返回错误信息
            var result = LetAdminLogin("CH", isLogin);

            if (string.IsNullOrEmpty(result) == false)
            {
                return(result);
            }

            switch (doWhat)
            {
            case "GenerFlowTemplete":
                Flow temp = new BP.WF.Flow(para1);
                return(null);

            case "NewFrmSort":
                BP.Sys.FrmSort frmSort = null;
                try
                {
                    frmSort      = new FrmSort();
                    frmSort.No   = "01";
                    frmSort.Name = para1;
                    frmSort.No   = frmSort.GenerNewNo;
                    frmSort.Insert();
                    return(null);
                }
                catch (Exception ex)
                {
                    return("Do Method NewFlowSort Branch has a error , para:\t" + para1 + ex.Message);
                }

            case "NewFlowSort":
                BP.WF.FlowSort fs = null;
                try
                {
                    fs      = new FlowSort();
                    fs.Name = para1;
                    fs.No   = fs.GenerNewNo;
                    fs.Insert();
                    return(fs.No);
                }
                catch (Exception ex)
                {
                    BP.DA.Log.DefaultLogWriteLineError("Do Method NewFlowSort Branch has a error , para:\t" + para1 + ex.Message);
                    return(null);
                }

            case "EditFlowSort":
                try
                {
                    var para = para1.Split(',');
                    fs      = new FlowSort(para[0]);
                    fs.Name = para[1];
                    fs.Save();
                    return(fs.No);
                }
                catch (Exception ex)
                {
                    BP.DA.Log.DefaultLogWriteLineError("Do Method EditFlowSort Branch has a error , para:\t" + para1 + ex.Message);
                    return(null);
                }

            case "NewFlow":
                Flow fl = new Flow();
                try
                {
                    string[] ps = para1.Split(',');
                    if (ps.Length != 5)
                    {
                        throw new Exception("@创建流程参数错误");
                    }

                    string         fk_floSort    = ps[0];
                    string         flowName      = ps[1];
                    DataStoreModel dataSaveModel = (DataStoreModel)int.Parse(ps[2]);
                    string         pTable        = ps[3];
                    string         flowCode      = ps[4];

                    fl.DoNewFlow(fk_floSort, flowName, dataSaveModel, pTable, flowCode);
                    return(fl.No + ";" + fl.Name);
                }
                catch (Exception ex)
                {
                    BP.DA.Log.DefaultLogWriteLineError("Do Method NewFlow Branch has a error , para:\t" + para1 + ex.Message);
                    return(ex.Message);
                }

            case "DelFlow":
                BP.WF.Flow fl1 = new BP.WF.Flow(para1);
                try
                {
                    fl1.DoDelete();
                    return(null);
                }
                catch (Exception ex)
                {
                    BP.DA.Log.DefaultLogWriteLineError("Do Method DelFlow Branch has a error , para:\t" + para1 + ex.Message);
                    return(ex.Message);
                }

            case "DelLable":
                BP.WF.LabNote ln = new BP.WF.LabNote(para1);
                try
                {
                    ln.Delete();
                }
                catch (Exception ex)
                {
                    BP.DA.Log.DefaultLogWriteLineError("Do Method DelLable Branch has a error , para:\t" + para1 + ex.Message);
                }
                return(null);

            case "DelFlowSort":
                try
                {
                    FlowSort delfs = new FlowSort(para1);
                    delfs.Delete();
                }
                catch (Exception ex)
                {
                    BP.DA.Log.DefaultLogWriteLineError("Do Method DelFlowSort Branch has a error , para:\t" + para1 + ex.Message);
                }

                return(null);

            case "NewNode":
                try
                {
                    BP.WF.Flow fl11 = new BP.WF.Flow(para1);
                    BP.WF.Node node = new BP.WF.Node();
                    node.FK_Flow = "";
                    node.X       = 0;
                    node.Y       = 0;
                    node.Insert();
                }
                catch (Exception ex)
                {
                    BP.DA.Log.DefaultLogWriteLineError("Do Method NewNode Branch has a error , para:\t" + para1 + ex.Message);
                }

                return(null);

            case "DelNode":
                try
                {
                    if (!string.IsNullOrEmpty(para1))
                    {
                        BP.WF.Node delNode = new BP.WF.Node(int.Parse(para1));
                        delNode.Delete();
                    }
                }
                catch (Exception ex)
                {
                    BP.DA.Log.DefaultLogWriteLineError("Do Method DelNode Branch has a error , para:\t" + para1 + ex.Message);
                }
                return(null);

            case "NewLab":
                BP.WF.LabNote lab = new BP.WF.LabNote();;
                try
                {
                    lab.FK_Flow = para1;
                    lab.MyPK    = BP.DA.DBAccess.GenerOID().ToString();
                    lab.Insert();
                }
                catch (Exception ex)
                {
                    BP.DA.Log.DefaultLogWriteLineError("Do Method NewLab Branch has a error , para:\t" + para1 + ex.Message);
                }
                return(lab.MyPK);

            case "DelLab":
                try
                {
                    BP.WF.LabNote dellab = new BP.WF.LabNote();
                    dellab.MyPK = para1;
                    dellab.Delete();
                }
                catch (Exception ex)
                {
                    BP.DA.Log.DefaultLogWriteLineError("Do Method DelLab Branch has a error , para:\t" + para1 + ex.Message);
                }

                return(null);

            case "GetSettings":
                return(SystemConfig.AppSettings[para1]);

            case "GetFlows":
                string sqls = "SELECT NO,NAME FROM WF_FlowSort";
                sqls += "@SELECT No,Name,FK_FlowSort FROM WF_Flow";
                return(RunSQLReturnTableS(sqls));

            case "SaveFlowFrm":
                Entity en = null;
                try
                {
                    AtPara ap     = new AtPara(para1);
                    string enName = ap.GetValStrByKey("EnName");
                    string pk     = ap.GetValStrByKey("PKVal");
                    en = ClassFactory.GetEn(enName);
                    en.ResetDefaultVal();

                    if (en == null)
                    {
                        throw new Exception("无效的类名:" + enName);
                    }

                    if (string.IsNullOrEmpty(pk) == false)
                    {
                        en.PKVal = pk;
                        en.RetrieveFromDBSources();
                    }

                    foreach (string key in ap.HisHT.Keys)
                    {
                        if (key == "PKVal")
                        {
                            continue;
                        }
                        en.SetValByKey(key, ap.HisHT[key].ToString().Replace('^', '@'));
                    }
                    en.Save();
                    return(en.PKVal as string);
                }
                catch (Exception ex)
                {
                    if (en != null)
                    {
                        en.CheckPhysicsTable();
                    }
                    return("Error:" + ex.Message);
                }

            case "ReleaseToFTP":
                // 暂时注释,下次更新ftp功能时会得新编译 。
                //var args = para1.Split(',');
                //var binaryData = Convert.FromBase64String(args[1]);
                //var imageFilePath = Server.MapPath(System.Web.HttpContext.Current.Request.ApplicationPath) + "/Temp/" + args[0] + ".jpg";
                //if (File.Exists(imageFilePath))
                //{
                //    File.Delete(imageFilePath);
                //}
                //System.IO.Directory.CreateDirectory(
                //    Server.MapPath(System.Web.HttpContext.Current.Request.ApplicationPath) + "/Temp");
                //var stream = new System.IO.FileStream(imageFilePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);
                //stream.Write(binaryData, 0, binaryData.Length);
                //stream.Close();
                //var xmlFilePath = FlowTemplete_Gener(args[0], true);
                //string remoteDr = "/" + ConfigurationSettings.AppSettings["UserIdentifier"];;
                //var ftp = new FtpConnection();
                //try
                //{
                //    string ftpIP = ConfigurationSettings.AppSettings["FTPServerIP"];
                //    string email = ConfigurationSettings.AppSettings["FTPUserEmail"];

                //    Session session = new Session();
                //    session.Server = ftpIP;


                //    session.Connect("anonymous", "*****@*****.**");
                //    ftp.Connect(ftpIP, "anonymous", email);
                //    remoteDr = remoteDr;
                //    if(!ftp.DirectoryExist(remoteDr))
                //    {
                //        ftp.CreateDirectory(remoteDr);
                //    }
                //    ftp.SetCurrentDirectory(remoteDr);
                //    ftp.PutFile(imageFilePath, remoteDr);
                //    return string.Empty;//上传成功

                //}
                //catch (Exception err)
                //{
                //    return err.Message;//上传失败
                //}
                //finally
                //{
                //    ftp.Close();
                //}
                return(string.Empty);

            default:
                throw null;
            }
        }
Exemplo n.º 22
0
        /// <summary>
        /// 绑定数据返回只读,不包含TB控件
        /// </summary>
        /// <param name="attrs"></param>
        /// <param name="pa"></param>
        public void BindAttrsForHtml(Attrs attrs, AtPara pa)
        {
            this.Add("<table width='100%' id='a1' border='1' cellpadding='0' cellspacing='0' style='border-collapse: collapse' bordercolor='#111111' >");
            bool   isLeft  = true;
            object val     = null;
            bool   isAddTR = true;

            foreach (Attr attr in attrs)
            {
                if (attr.UIVisible == false)
                {
                    continue;
                }

                if (attr.Key == "MyNum")
                {
                    continue;
                }

                if (isLeft)
                {
                    isAddTR = true;
                    this.AddTR();
                }

                val = pa.GetValStrByKey(attr.Key);
                if (attr.UIContralType == UIContralType.TB)
                {
                    if (attr.MyFieldType == FieldType.RefText)
                    {
                        //this.SetValByKey(attr.Key, val.ToString());
                        continue;
                    }
                    else if (attr.MyFieldType == FieldType.MultiValues)
                    {
                        /* 如果是多值的.*/
                        LB lb = new LB(attr);
                        lb.Visible       = true;
                        lb.Height        = 128;
                        lb.SelectionMode = ListSelectionMode.Multiple;
                        Entities ens = ClassFactory.GetEns(attr.UIBindKey);
                        ens.RetrieveAll();
                        this.Controls.Add(lb);
                    }
                    else
                    {
                        if (attr.UIVisible == false)
                        {
                            continue;
                        }
                        else
                        {
                            switch (attr.MyDataType)
                            {
                            case DataType.AppMoney:
                                val = decimal.Parse(val.ToString()).ToString("0.00");
                                break;

                            default:
                                val = val.ToString();
                                break;
                            }

                            this.Add("<td class='FDesc' nowrap width=1% > " + attr.Desc + "</td>");
                            this.Add("<td class='TD' nowrap width='30%'>");
                            this.Add(val.ToString());
                            this.Add("</td>");
                        }
                    }
                }
                else if (attr.UIContralType == UIContralType.CheckBok)
                {
                    CheckBox cb = new CheckBox();
                    if (attr.DefaultVal.ToString() == "1")
                    {
                        cb.Checked = true;
                    }
                    else
                    {
                        cb.Checked = false;
                    }

                    cb.ID = "CB_RD_" + attr.Key;
                    this.AddContral(attr.Desc, cb);
                }
                else if (attr.UIContralType == UIContralType.DDL)
                {
                    /* 如果是 DDLIsEnable 的, 就要找到. */
                    if (attr.MyFieldType == FieldType.Enum)
                    {
                        /* 如果是 enum 类型 */
                        int enumKey = 0;
                        try
                        {
                            enumKey = int.Parse(val.ToString());
                        }
                        catch
                        {
                            throw new Exception("默认值错误:" + attr.Key + " = " + val.ToString());
                        }

                        BP.Sys.SysEnum enEnum = new BP.Sys.SysEnum(attr.UIBindKey, "CH", enumKey);

                        this.Add("<td class='FDesc' nowrap width=1% > " + attr.Desc + "</td>");
                        this.Add("<td class='TD' nowrap width='30%'>");
                        this.Add(enEnum.Lab);
                        this.Add("</td>");
                    }
                    else
                    {
                        /* 如果是 ens 类型 */
                        Entities ens = ClassFactory.GetEns(attr.UIBindKey);
                        Entity   en1 = ens.GetNewEntity;
                        en1.SetValByKey(attr.UIRefKeyValue, val.ToString());
                        string lab = "";
                        try
                        {
                            en1.Retrieve();
                            lab = en1.GetValStringByKey(attr.UIRefKeyText);
                        }
                        catch
                        {
                            if (SystemConfig.IsDebug == false)
                            {
                                lab = "" + val.ToString();
                            }
                            else
                            {
                                lab = "" + val.ToString();
                            }
                        }

                        this.Add("<td class='FDesc' nowrap width=1% > " + attr.Desc + "</td>");
                        this.Add("<td class='TD' nowrap width='30%'>");
                        this.Add(lab);
                        this.Add("</td>");
                    }
                }
                else if (attr.UIContralType == UIContralType.RadioBtn)
                {
                    //					Sys.SysEnums enums = new BP.Sys.SysEnums(attr.UIBindKey);
                    //					foreach(SysEnum en in enums)
                    //					{
                    //						return ;
                    //					}
                }

                if (isLeft == false)
                {
                    isAddTR = false;
                    this.AddTREnd();
                }

                isLeft = !isLeft;
            } // 结束循环.
            //补充TR
            if (isAddTR == true)
            {
                this.AddTD("");
                this.AddTD("");
                this.AddTREnd();
            }
            this.Add("</TABLE>");
        }
        /// <summary>
        /// 保存流程, 用 ~ 隔开。
        /// </summary>
        /// <param name="flowNo">流程编号</param>
        /// <param name="nodes">节点信息,格式为:@NodeID=xxxx@X=xxx@Y=xxx@Name=xxxx@RunModel=1</param>
        /// <param name="dirs">方向信息,格式为: @Node=xxxx@ToNode=xxx@X=xxx@Y=xxx@Name=xxxx   </param>
        /// <param name="labes">标签信息,格式为:@MyPK=xxxxx@Label=xxx@X=xxx@Y=xxxx</param>
        public static string SaveFlow(string fk_flow, string nodes, string dirs, string labes)
        {
            try
            {
                #region 处理方向.
                string sql = "DELETE FROM WF_Direction WHERE FK_Flow='" + fk_flow + "'";
                DBAccess.RunSQL(sql);

                string[] mydirs = dirs.Split('~');
                foreach (string dir in mydirs)
                {
                    if (string.IsNullOrEmpty(dir))
                    {
                        continue;
                    }

                    AtPara ap = new AtPara(dir);

                    string dots = ap.GetValStrByKey("Dots").Replace('#', '@');
                    if (string.IsNullOrEmpty(dots) == true)
                    {
                        dots = "";
                    }

                    Direction enDir = new Direction();
                    enDir.Node      = ap.GetValIntByKey(DirectionAttr.Node);
                    enDir.ToNode    = ap.GetValIntByKey(DirectionAttr.ToNode);
                    enDir.IsCanBack = ap.GetValBoolenByKey(DirectionAttr.IsCanBack);
                    enDir.DirType   = ap.GetValIntByKey(DirectionAttr.DirType);
                    enDir.FK_Flow   = fk_flow;
                    enDir.Dots      = dots;
                    try
                    {
                        enDir.Insert();
                    }
                    catch
                    {
                        // enDir.Update();
                    }
                }
                #endregion 处理方向.

                #region 保存节点
                string[] nds = nodes.Split('~');
                foreach (string nd in nds)
                {
                    if (string.IsNullOrEmpty(nd))
                    {
                        continue;
                    }

                    AtPara ap = new AtPara(nd);
                    sql = "UPDATE WF_Node SET X=" + ap.GetValStrByKey("X") + ",Y=" + ap.GetValStrByKey("Y") + ", Name='" + ap.GetValStrByKey("Name") + "' WHERE NodeID=" + ap.GetValIntByKey("NodeID");
                    DBAccess.RunSQL(sql);
                }
                Flow.UpdateVer(fk_flow);
                #endregion 保存节点


                #region 处理标签。
                sql = "DELETE FROM WF_LabNote WHERE FK_Flow='" + fk_flow + "'";
                DBAccess.RunSQL(sql);

                string[] mylabs = labes.Split('~');
                foreach (string lab in mylabs)
                {
                    if (string.IsNullOrEmpty(lab))
                    {
                        continue;
                    }

                    AtPara  ap = new AtPara(lab);
                    LabNote ln = new LabNote();
                    ln.MyPK    = BP.DA.DBAccess.GenerGUID(); // ap.GetValStrByKey("MyPK");
                    ln.FK_Flow = fk_flow;
                    ln.Name    = ap.GetValStrByKey("Label");
                    ln.X       = ap.GetValIntByKey("X");
                    ln.Y       = ap.GetValIntByKey("Y");
                    ln.Insert();
                }
                #endregion 处理标签。

                // 备份文件
                //f1.WriteToXml();
            }
            catch (Exception ex)
            {
                return(ex.Message);
            }
            return(null);
        }
Exemplo n.º 24
0
        protected void Page_Load(object sender, EventArgs e)
        {
            //以下判断没发现起到什么作用
            if (BP.WF.Dev2Interface.Flow_IsCanViewTruck(this.FK_Flow, this.WorkID, this.FID) == false)
            {
                //string url = this.Request.RawUrl;
                ////url=url.Replace
                ////this.Response.Redirect(url,true);

                //string errorStr = "您没有权限查看该工作";
                //errorStr += "<br>1,您非该流程的处理人.";
                //errorStr += "<br>2, 您不与该流程发起人是同一个部门。";
                //return ;
            }

            if (this.DoType == "View")
            {
                this.BindTrack_ViewWork();
                return;
            }

            if (this.DoType == "ViewSpecialWork")
            {
                this.BindTrack_ViewSpecialWork();
                return;
            }


            //this.AddTable("class='Table' cellpadding='0' cellspacing='0' border='0' style='width: 100%'");
            //this.AddTR();
            //this.AddTDGroupTitle("style='text-align:center'", "序");
            //this.AddTDGroupTitle("操作时间");
            //this.AddTDGroupTitle("表单"); //moved by liuxc,2014-12-18,应zhangqingpeng要求将此列提前
            //this.AddTDGroupTitle("从节点");
            //this.AddTDGroupTitle("人员");
            //this.AddTDGroupTitle("到节点");
            //this.AddTDGroupTitle("人员");
            //this.AddTDGroupTitle("到达时间");
            //this.AddTDGroupTitle("用时");
            //this.AddTDGroupTitle("活动");
            //this.AddTDGroupTitle("信息");
            //this.AddTDGroupTitle("执行人");
            //this.AddTREnd();

            //获取track.
            DataTable dt = BP.WF.Dev2Interface.DB_GenerTrack(this.FK_Flow, this.WorkID, this.FID).Tables["Track"];
            DataView  dv = dt.DefaultView;

            dv.Sort = "RDT";

            GenerWorkFlow gwf = new GenerWorkFlow();

            gwf.WorkID = this.WorkID;
            gwf.RetrieveFromDBSources();

            string currNodeID = "0";

            if (gwf.WFState != WFState.Complete)
            {
                currNodeID = gwf.FK_Node.ToString(); //获得当前运行到的节点如果流程完成则为O.
            }
            int    idx      = 1;
            string checkStr = "";

            #region    qin   改成时间轴的显示方式 15/7/15   如果不需要这种显示方式
            string str = "";//拼接字符串
            str += "<div style='width: 100%;height:400px;'><div class='content'>";
            str += "<div class='wrapper'>";
            str += "<div class='main'>";

            str += "<h1 class='title'>";
            str += "流程日志</h1>";
            str += "<div class='year'>";
            str += "<h2>";
            str += "<a href='#'>&nbsp;&nbsp;时间轴<i></i></a></h2>";
            str += "<div class='list'>";
            str += "<ul>";
            #endregion qin   改成时间轴的显示方式 15/7/15

            #region 开始循环添加数据
            foreach (DataRowView dr in dv)
            {
                Int64 fid = int.Parse(dr["FID"].ToString());
                if (fid != 0)
                {
                    continue;
                }

                ActionType at = (ActionType)int.Parse(dr[TrackAttr.ActionType].ToString());

                //如果是协作发送,就不输出他. edit 2016.02.20 .
                if (at == ActionType.TeampUp)
                {
                    continue;
                }

                // 记录审核节点。
                if (at == ActionType.WorkCheck)
                {
                    checkStr = dr[TrackAttr.NDFrom].ToString(); //记录当前的审核节点id.
                }
                //审核信息过滤,
                if (at == ActionType.WorkCheck)
                {
                    if (currNodeID == checkStr)
                    {
                        continue;
                    }
                    //如果当前节点与审核信息节点一致,就说明当前人员的审核意见已经保存,但是工作还没有发送,就不让他显示。
                }

                if (at == ActionType.Forward)
                {
                    if (checkStr == dr[TrackAttr.NDFrom].ToString())
                    {
                        continue;
                    }
                }
                str += "<li  class='cls highlight' style=\"background: url('../../Img/Action/" + at.ToString() + ".png') no-repeat 235px 31px\">";
                //this.AddTR();
                //this.AddTDIdx(idx);

                DateTime dtt = DataType.ParseSysDateTime2DateTime(dr[TrackAttr.RDT].ToString());

                // this.AddTD(dtt.ToString("yy年MM月dd日HH:mm"));</br>
                str += "<p class='date'>" + dtt.ToString("yy年MM月dd日") + " " + dtt.ToString("hh时mm分");
                str += "</br>" + BP.DA.DataType.GetWeek((int)dtt.DayOfWeek);
                str += "</br>" + BP.WF.Glo.GenerUserImgHtml(dr[TrackAttr.EmpFrom].ToString(), dr[TrackAttr.EmpFromT].ToString()) + "</p>";
                str += "<p class='intro'>" + dr[TrackAttr.NDFromT].ToString() + "</p>";

                str += "<div class='more'>";

                if (at == ActionType.Forward || at == ActionType.ForwardAskfor || at == ActionType.WorkCheck || at == ActionType.Order ||
                    at == ActionType.FlowOver || //added by liuxc,2014-12-3,正常结束结点也显示表单
                    at == ActionType.Skip)       //added by liuxc,2015-7-13,自动跳转的也显示表单
                {
                    //this.AddTD("<a class='easyui-linkbutton' data-options=\"iconCls:'icon-sheet'\" href=\"javascript:WinOpen('" + BP.WF.Glo.CCFlowAppPath + "WF/WFRpt.aspx?WorkID=" + dr[TrackAttr.WorkID].ToString() + "&FK_Flow=" + this.FK_Flow + "&FK_Node=" + dr[TrackAttr.NDFrom].ToString() + "&DoType=View&MyPK=" + dr[TrackAttr.MyPK].ToString() + "','" + dr[TrackAttr.MyPK].ToString() + "');\">表单</a>");
                    str += "<p><a class='easyui-linkbutton' data-options=\"iconCls:'icon-sheet'\" href=\"javascript:WinOpen('" + BP.WF.Glo.CCFlowAppPath + "WF/WFRpt.aspx?WorkID=" + dr[TrackAttr.WorkID].ToString() + "&FK_Flow=" + this.FK_Flow + "&FK_Node=" + dr[TrackAttr.NDFrom].ToString() + "&DoType=View&MyPK=" + dr[TrackAttr.MyPK].ToString() + "','" + dr[TrackAttr.MyPK].ToString() + "');\">打开<img src='../../Img/Form.png'>表单</a>" + "</p>";
                }

                if (at == ActionType.FlowOver ||
                    at == ActionType.CC ||
                    at == ActionType.UnSend)
                {
                    str += "<p></p>";
                    str += "<p></p>";
                }
                else
                {
                    str += "<p>发送到节点:" + dr[TrackAttr.NDToT].ToString() + "</p>";
                }

                //增加两列,到达时间、用时 added by liuxc,2014-12-4
                if (idx > 1)
                {
                    var toTime = Convert.ToDateTime(dv[idx - 1 - 1][TrackAttr.RDT].ToString());
                    str += "<p>到达时间:" + toTime.ToString("yy年MM月dd日HH:mm") + " 用时:" + DataType.GetSpanTime(toTime, dtt) + "</p>";
                }

                // 删除信息.
                string tag = dr[TrackAttr.Tag].ToString();
                if (tag != null)
                {
                    tag = tag.Replace("~", "'");
                }

                string msg = DataType.ParseText2Html(dr[TrackAttr.Msg].ToString());
                switch (at)
                {
                case ActionType.CallChildenFlow:     //被调用父流程吊起。
                    if (string.IsNullOrEmpty(tag) == false)
                    {
                        AtPara        ap    = new AtPara(tag);
                        GenerWorkFlow mygwf = new GenerWorkFlow();
                        mygwf.WorkID = ap.GetValInt64ByKey("PWorkID");
                        if (mygwf.RetrieveFromDBSources() == 1)
                        {
                            msg = "<p>操作员:{" + dr[TrackAttr.EmpFromT].ToString() + "}在当前节点上,被父流程{" + mygwf.FlowName + "},<a target=b" + ap.GetValStrByKey("PWorkID") + " href='Track.aspx?WorkID=" + ap.GetValStrByKey("PWorkID") + "&FK_Flow=" + ap.GetValStrByKey("PFlowNo") + "' >" + msg + "</a></p>";
                        }
                        else
                        {
                            msg = "<p>操作员:{" + dr[TrackAttr.EmpFromT].ToString() + "}在当前节点上,被父流程调用{" + mygwf.FlowName + "},但是该流程被删除了.</p>" + tag;
                        }

                        msg = "<a target=b" + ap.GetValStrByKey("PWorkID") + " href='Track.aspx?WorkID=" + ap.GetValStrByKey("PWorkID") + "&FK_Flow=" + ap.GetValStrByKey("PFlowNo") + "' >" + msg + "</a>";
                    }
                    break;

                case ActionType.StartChildenFlow:     //吊起子流程。
                    if (string.IsNullOrEmpty(tag) == false)
                    {
                        if (tag.Contains("Sub"))
                        {
                            tag = tag.Replace("Sub", "C");
                        }

                        AtPara        ap    = new AtPara(tag);
                        GenerWorkFlow mygwf = new GenerWorkFlow();
                        mygwf.WorkID = ap.GetValInt64ByKey("CWorkID");
                        if (mygwf.RetrieveFromDBSources() == 1)
                        {
                            msg  = "<p>操作员:{" + dr[TrackAttr.EmpFromT].ToString() + "}在当前节点上调用了子流程{" + mygwf.FlowName + "}, <a target=b" + ap.GetValStrByKey("CWorkID") + " href='Track.aspx?WorkID=" + ap.GetValStrByKey("CWorkID") + "&FK_Flow=" + ap.GetValStrByKey("CFlowNo") + "' >" + msg + "</a></p>";
                            msg += "<p>当前子流程状态:{" + mygwf.WFStateText + "},运转到:{" + mygwf.NodeName + "},最后处理人{" + mygwf.TodoEmps + "},最后处理时间{" + mygwf.RDT + "}。</p>";
                        }
                        else
                        {
                            msg = "<p>操作员:{" + dr[TrackAttr.EmpFromT].ToString() + "}在当前节点上调用了子流程{" + mygwf.FlowName + "},但是该流程被删除了.</p>" + tag;
                        }
                    }
                    break;

                default:
                    break;
                }

                msg = msg.Replace("\"", "");

                str += "<p>" + msg + "</p>";
                str += "</div>";
                str += "</li>";
                idx++;
            }

            //判断当前工作是否完成,如果没有完成,就输出当前人员的待办信息 ,读取信息。

            if (gwf.WFState == WFState.Runing)
            {
                GenerWorkerLists gwls = new GenerWorkerLists(gwf.WorkID, gwf.FK_Node);
                Node             nd   = new Node(gwf.FK_Node);

                str += "<li  class='cls highlight' style=\"background: url('../../Img/Action/Todolist.png') no-repeat 235px 31px\" >";

                str += "<BR><BR><p class='date'>流程运行到: " + gwf.NodeName + "。";

                if (gwf.TodoEmpsNum == 1)
                {
                    string myemp = gwf.TodoEmps;
                    myemp = myemp.Replace("(", "");
                    myemp = myemp.Replace(")", "");
                    string[] strs = myemp.Split(',');
                    str += "<br>" + BP.WF.Glo.GenerUserImgHtml(strs[0], strs[1]) + "。</p>";
                }
                else
                {
                    //   str += "<br>处理人员:(" + gwf.TodoEmps + ")计(" + gwf.TodoEmpsNum + ")个,。</p>";
                }

                str += "<div></div><br><br>";
                if (nd.HisNodeWorkType == NodeWorkType.WorkFL ||
                    nd.HisNodeWorkType == NodeWorkType.StartWorkFL ||
                    nd.HisNodeWorkType == NodeWorkType.WorkFHL)
                {
                    str += "<div><ul>";
                    foreach (GenerWorkerList item in gwls)
                    {
                        if (gwls.Count == 0 ||
                            nd.TodolistModel == TodolistModel.QiangBan ||
                            nd.TodolistModel == TodolistModel.Sharing)
                        {
                            if (item.IsRead == false)
                            {
                                str += "<li><img src='../../Img/Dot.png' width='8px' >处理人:" + BP.WF.Glo.DealUserInfoShowModel(item.FK_Emp, item.FK_EmpText) + "&nbsp;&nbsp; <font style='color:#FFFFFF; background-color:#00CC66' >未读</font></li>";
                            }
                            else
                            {
                                str += "<li><img src='../../Img/Dot.png' width='8px' >处理人:" + BP.WF.Glo.DealUserInfoShowModel(item.FK_Emp, item.FK_EmpText) + "&nbsp;&nbsp;<font style='color:#FFFFFF; background-color:#FF9966' ><strong>已读</strong></font></li>";
                            }
                            break;
                        }

                        switch (nd.TodolistModel)
                        {
                        case TodolistModel.QiangBan:
                            str += "<li><img src='../../Img/Dot.png' width='8px' >处理人:" + BP.WF.Glo.DealUserInfoShowModel(item.FK_Emp, item.FK_EmpText) + "&nbsp;&nbsp;<font style='color:#FFFFFF; background-color:#FF9966' ><strong>已读</strong></font></li>";
                            break;

                        case TodolistModel.Order:
                            if (item.IsPassInt == 1)
                            {
                                str += "<li><img src='../../Img/Dot.png' width='8px' >处理人:" + BP.WF.Glo.DealUserInfoShowModel(item.FK_Emp, item.FK_EmpText) + "&nbsp;&nbsp;<font style='color:#FFFFFF; background-color:#FF9966' ><strong>已处理</strong></font></li>";
                            }
                            else
                            {
                                if (item.IsRead == false)
                                {
                                    str += "<li><img src='../../Img/Dot.png' width='8px' >处理人:" + BP.WF.Glo.DealUserInfoShowModel(item.FK_Emp, item.FK_EmpText) + "&nbsp;&nbsp; <font style='color:#FFFFFF; background-color:#00CC66' >未读</font></li>";
                                }
                                else
                                {
                                    str += "<li><img src='../../Img/Dot.png' width='8px' >处理人:" + BP.WF.Glo.DealUserInfoShowModel(item.FK_Emp, item.FK_EmpText) + "&nbsp;&nbsp;<font style='color:#FFFFFF; background-color:#FF9966' ><strong>已读</strong></font></li>";
                                }
                            }
                            break;

                        case TodolistModel.Sharing:
                            str += "<li><img src='../../Img/Dot.png' width='8px' >处理人:" + BP.WF.Glo.DealUserInfoShowModel(item.FK_Emp, item.FK_EmpText) + "&nbsp;&nbsp;<font style='color:#FFFFFF; background-color:#FF9966' ><strong>已读</strong></font></li>";
                            break;

                        case TodolistModel.Teamup:
                            if (item.IsPassInt == 1)
                            {
                                str += "<li><img src='../../Img/Dot.png' width='8px' >处理人:" + BP.WF.Glo.DealUserInfoShowModel(item.FK_Emp, item.FK_EmpText) + "&nbsp;&nbsp;<font style='color:#FFFFFF; background-color:#999966' ><strong>已处理</strong></font></li>";
                            }
                            else
                            {
                                if (item.IsRead == false)
                                {
                                    str += "<li><img src='../../Img/Dot.png' width='8px' >处理人:" + BP.WF.Glo.DealUserInfoShowModel(item.FK_Emp, item.FK_EmpText) + "&nbsp;&nbsp; <font style='color:#FFFFFF; background-color:#00CC66' >未读</font></li>";
                                }
                                else
                                {
                                    str += "<li><img src='../../Img/Dot.png' width='8px' >处理人:" + BP.WF.Glo.DealUserInfoShowModel(item.FK_Emp, item.FK_EmpText) + "&nbsp;&nbsp;<font style='color:#FFFFFF; background-color:#FF9966' ><strong>已读</strong></font></li>";
                                }
                            }
                            break;

                        default:
                            break;
                        }
                    }
                }

                str += "</ul>";
                str += "</div>";

                str += "<br>";
                str += "<br>";
                str += "<br>";
                str += "<br>";
                str += "<br>";
                str += "<br>";
                str += "<br>";

                str += "</li>";


                ///* 运行中的状态. */
                //str += "<li>";
                //str += "<table>";
                //str += "<caption>当前节点信息</caption>";
                //str += "<tr>";
                //str += "<th>停留节点</th>";
                //str += "<th>处理人</th>";
                //str += "<th>是否读取?</th>";
                //str += "</tr>";
                //foreach (GenerWorkerList item in gwls)
                //{
                //    str += "<tr>";
                //    str += "<td>" + item.FK_NodeText + "</td>";
                //    str += "<td>" + item.FK_EmpText + "</td>";
                //    if (item.IsRead)
                //        str += "<td>已读</td>";
                //    else
                //        str += "<td>未读</td>";
                //    str += "</tr>";
                //}
                //str += "</table>";
                //str += "</li>";
            }

            //结束循环.
            //this.AddTableEnd();
            #endregion

            if (this.CCID != null)
            {
                CCList cl = new CCList();
                cl.MyPK = this.CCID;
                cl.RetrieveFromDBSources();
                // this.AddFieldSet(cl.Title);
                // this.Add("抄送人:" + cl.Rec + ", 抄送日期:" + cl.RDT);
                // this.AddHR();
                // this.Add(cl.DocHtml);
                // this.AddFieldSetEnd();
                str += "<li  class='cls highlight' style=\"background: url('./Img/Action/circle.png') no-repeat 235px 31px\">";
                str += "<p class='date'>&nbsp;</p>";
                str += "<p class='intro'>" + cl.Title + "</p>";
                str += "<p class='version'>&nbsp;</p>";
                str += "<div class='more'>";
                str += "<p>抄送人:" + cl.Rec + "</p>";
                str += "<p>抄送日期:" + cl.RDT + "</p>";
                str += "</div>";
                str += "</li>";
                if (cl.HisSta == CCSta.UnRead)
                {
                    cl.HisSta = CCSta.Read;
                    cl.Update();
                }
            }

            str += "</ul>";
            str += "</div>";
            str += "</div>";
            str += "</div>";
            str += "</div>";
            str += "</div>";
            str += "</div>";
            //this.Clear();
            HiddenField1.Value = str.ToString();
        }
Exemplo n.º 25
0
        void btn_Click(object sender, EventArgs e)
        {
            UserRegedit ur = new UserRegedit();

            ur.MyPK = this.MyPK;
            ur.RetrieveFromDBSources();
            ur.FK_Emp = WebUser.No;
            ur.CfgKey = this.EnsName + "_SearchAttrs";

            Entity en   = BP.DA.ClassFactory.GetEns(this.EnsName).GetNewEntity;
            Attr   attr = en.EnMap.GetAttrByKey(this.AttrKey);

            string cfgVal  = ur.MVals;
            AtPara ap      = new AtPara(cfgVal);
            string old_Val = ap.GetValStrByKey(this.AttrKey);

            string keys = "@" + this.AttrKey + "=";

            if (attr.IsEnum)
            {
                SysEnums ses = new SysEnums(attr.UIBindKey);
                foreach (SysEnum item in ses)
                {
                    if (this.Pub1.GetCBByID("CB_" + item.IntKey).Checked == false)
                    {
                        continue;
                    }
                    keys += "." + item.IntKey + ".";
                }

                if (ur.MVals.Contains("@" + this.AttrKey))
                {
                    ur.MVals = ur.MVals.Replace("@" + this.AttrKey + "=" + old_Val, keys);
                }
                else
                {
                    ur.MVals = ur.MVals + keys;
                }

                ur.DirectUpdate();
            }
            else
            {
                if (attr.UIBindKey == "BP.Port.Depts")
                {
                    DataTable dt;
                    if (WebUser.No == "admin")
                    {
                        dt = DBAccess.RunSQLReturnTable("SELECT No,Name FROM Port_Dept ");
                    }
                    else
                    {
                        dt = DBAccess.RunSQLReturnTable("SELECT No,Name FROM Port_Dept WHERE No IN (SELECT FK_Dept FROM  WF_DeptFlowSearch WHERE FK_Emp='" + WebUser.No + "'  AND FK_Flow='" + this.FK_Flow + "')");
                    }

                    foreach (DataRow dr in dt.Rows)
                    {
                        if (this.Pub1.GetCBByID("CB_" + dr[0].ToString()).Checked == false)
                        {
                            continue;
                        }
                        keys += "." + dr[0].ToString() + ".";
                    }
                }
                else
                {
                    Entities ens = BP.DA.ClassFactory.GetEns(attr.UIBindKey);
                    ens.RetrieveAll();
                    foreach (Entity item in ens)
                    {
                        if (this.Pub1.GetCBByID("CB_" + item.GetValStrByKey(attr.UIRefKeyValue)).Checked == false)
                        {
                            continue;
                        }
                        keys += "." + item.GetValStrByKey(attr.UIRefKeyValue) + ".";
                    }
                }
                if (ur.MVals.Contains("@" + this.AttrKey))
                {
                    ur.MVals = ur.MVals.Replace("@" + this.AttrKey + "=" + old_Val, keys);
                }
                else
                {
                    ur.MVals = ur.MVals + keys;
                }
                ur.DirectUpdate();
            }
            keys = keys.Replace("@" + this.AttrKey + "=", "");
            this.WinClose(keys);
        }
Exemplo n.º 26
0
        /// <summary>
        /// 树节点管理
        /// </summary>
        public string Do()
        {
            string doWhat = getUTF8ToString("doWhat");
            string para1  = getUTF8ToString("para1");
            // 如果admin账户登陆时有错误发生,则返回错误信息
            var result = LetAdminLogin("CH", true);

            if (string.IsNullOrEmpty(result) == false)
            {
                return(result);
            }

            switch (doWhat)
            {
            case "GetFlowSorts":        //获取所有流程类型
                try
                {
                    FlowSorts flowSorts = new FlowSorts();
                    flowSorts.RetrieveAll(FlowSortAttr.Idx);
                    return(BP.Tools.Entitis2Json.ConvertEntitis2GenerTree(flowSorts, "0"));
                }
                catch (Exception ex)
                {
                    return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, msg = ex.Message }));
                }

            case "NewSameLevelFrmSort":     //创建同级别的 表单树 目录.
                SysFormTree frmSort = null;
                try
                {
                    var para = para1.Split(',');
                    frmSort = new SysFormTree(para[0]);
                    string sameNodeNo = frmSort.DoCreateSameLevelNode().No;
                    frmSort      = new SysFormTree(sameNodeNo);
                    frmSort.Name = para[1];
                    frmSort.Update();
                    return(null);
                }
                catch (Exception ex)
                {
                    return("Do Method NewFormSort Branch has a error , para:\t" + para1 + ex.Message);
                }

            case "NewSubLevelFrmSort":     //创建子级别的 表单树 目录.
                SysFormTree frmSortSub = null;
                try
                {
                    var para = para1.Split(',');
                    frmSortSub = new SysFormTree(para[0]);
                    string sameNodeNo = frmSortSub.DoCreateSubNode().No;
                    frmSortSub      = new SysFormTree(sameNodeNo);
                    frmSortSub.Name = para[1];
                    frmSortSub.Update();
                    return(null);
                }
                catch (Exception ex)
                {
                    return("Do Method NewSubLevelFrmSort Branch has a error , para:\t" + para1 + ex.Message);
                }

            case "NewSameLevelFlowSort":      //创建同级别的 流程树 目录.
                FlowSort fs = null;
                try
                {
                    var para = para1.Split(',');
                    fs = new FlowSort(para[0].Replace("F", ""));    //传入的编号多出F符号,需要替换掉
                    string sameNodeNo = fs.DoCreateSameLevelNode().No;
                    fs      = new FlowSort(sameNodeNo);
                    fs.Name = para[1];
                    fs.Update();
                    return
                        (Newtonsoft.Json.JsonConvert.SerializeObject(
                             new { success = true, msg = string.Empty, data = "F" + fs.No }));
                }
                catch (Exception ex)
                {
                    BP.DA.Log.DefaultLogWriteLineError("Do Method NewSameLevelFlowSort Branch has a error , para:\t" + para1 + ex.Message);
                    return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, msg = ex.Message }));
                }

            case "NewSubFlowSort":     //创建子级别的 流程树 目录.
                try
                {
                    var      para        = para1.Split(',');
                    FlowSort fsSub       = new FlowSort(para[0].Replace("F", ""));//传入的编号多出F符号,需要替换掉
                    string   subNodeNo   = fsSub.DoCreateSubNode().No;
                    FlowSort subFlowSort = new FlowSort(subNodeNo);
                    subFlowSort.Name = para[1];
                    subFlowSort.Update();
                    return
                        (Newtonsoft.Json.JsonConvert.SerializeObject(
                             new { success = true, msg = string.Empty, data = "F" + subFlowSort.No }));
                }
                catch (Exception ex)
                {
                    BP.DA.Log.DefaultLogWriteLineError("Do Method NewSubFlowSort Branch has a error , para:\t" + ex.Message);
                    return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, msg = ex.Message }));
                }

            case "EditFlowSort":     //编辑表单树.
                try
                {
                    var para = para1.Split(',');
                    fs      = new FlowSort(para[0].Replace("F", ""));//传入的编号多出F符号,需要替换掉
                    fs.Name = para[1];
                    fs.Save();
                    return
                        (Newtonsoft.Json.JsonConvert.SerializeObject(
                             new { success = true, msg = string.Empty, data = fs.No }));
                }
                catch (Exception ex)
                {
                    BP.DA.Log.DefaultLogWriteLineError("Do Method EditFlowSort Branch has a error , para:\t" + para1 + ex.Message);
                    return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, msg = ex.Message }));
                }

            case "NewFlow":     //创建新流程.
                try
                {
                    string[] ps = para1.Split(',');
                    if (ps.Length != 6)
                    {
                        throw new Exception("@创建流程参数错误");
                    }

                    string fk_floSort = ps[0];                                       //类别编号.
                    fk_floSort = fk_floSort.Replace("F", "");                        //传入的编号多出F符号,需要替换掉

                    string         flowName      = ps[1];                            // 流程名称.
                    DataStoreModel dataSaveModel = (DataStoreModel)int.Parse(ps[2]); //数据保存方式。
                    string         pTable        = ps[3];                            // 物理表名。
                    string         flowMark      = ps[4];                            // 流程标记.
                    string         flowVer       = ps[5];                            // 流程版本

                    string FK_Flow = BP.BPMN.Glo.NewFlow(fk_floSort, flowName, dataSaveModel, pTable, flowMark, flowVer);
                    return
                        (Newtonsoft.Json.JsonConvert.SerializeObject(
                             new { success = true, msg = string.Empty, data = new { no = FK_Flow, name = flowName } }));
                }
                catch (Exception ex)
                {
                    BP.DA.Log.DefaultLogWriteLineError("Do Method NewFlow Branch has a error , para:\t" + para1 + ex.Message);
                    return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, msg = ex.Message }));
                }

            case "DelFlow":     //删除流程.
                try
                {
                    return(Newtonsoft.Json.JsonConvert.SerializeObject(
                               new { success = true, msg = WorkflowDefintionManager.DeleteFlowTemplete(para1) }));
                }
                catch (Exception ex)
                {
                    return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, msg = ex.Message }));
                }

            case "DelFlowSort":
                try
                {
                    string   FK_FlowSort = para1.Replace("F", "");
                    string   forceDel    = getUTF8ToString("force");
                    FlowSort delfs       = new FlowSort();
                    delfs.No = FK_FlowSort;
                    //强制删除,不需判断是否含有子项。
                    if (forceDel == "true")
                    {
                        delfs.DeleteFlowSortSubNode_Force();
                        delfs.Delete();
                        return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = true, reason = "" }));
                    }

                    //判断是否包含子类别
                    if (delfs.HisSubFlowSorts != null && delfs.HisSubFlowSorts.Count > 0)
                    {
                        return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, reason = "havesubsorts", msg = "此类别下包含子类别。" }));
                    }

                    //判断是否包含工作流程
                    if (delfs.HisFlows != null && delfs.HisFlows.Count > 0)
                    {
                        return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, reason = "haveflows", msg = "此类别下包含流程。" }));
                    }

                    //执行删除
                    delfs.Delete();
                    return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = true, reason = "" }));
                }
                catch (Exception ex)
                {
                    BP.DA.Log.DefaultLogWriteLineError("Do Method DelFlowSort Branch has a error , para:\t" + para1 + ex.Message);
                    return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, msg = ex.Message }));
                }

            case "DelNode":
                try
                {
                    if (!string.IsNullOrEmpty(para1))
                    {
                        BP.WF.Node delNode = new BP.WF.Node(int.Parse(para1));
                        delNode.Delete();
                    }
                    else
                    {
                        throw new Exception("@参数错误:" + para1);
                    }
                }
                catch (Exception ex)
                {
                    return("err:" + ex.Message);
                }
                return(null);

            case "SetBUnit":
                try
                {
                    if (!string.IsNullOrEmpty(para1))
                    {
                        BP.WF.Node nd = new BP.WF.Node(int.Parse(para1));
                        nd.IsTask = !nd.IsBUnit;
                        nd.Update();
                    }
                    else
                    {
                        throw new Exception("@参数错误:" + para1);
                    }
                }
                catch (Exception ex)
                {
                    return("err:" + ex.Message);
                }
                return(null);

            case "GetSettings":
                return(SystemConfig.AppSettings[para1]);

            case "SaveFlowFrm":      //保存流程表单.
                Entity en = null;
                try
                {
                    AtPara ap     = new AtPara(para1);
                    string enName = ap.GetValStrByKey("EnName");
                    string pk     = ap.GetValStrByKey("PKVal");
                    en = ClassFactory.GetEn(enName);
                    en.ResetDefaultVal();
                    if (en == null)
                    {
                        throw new Exception("无效的类名:" + enName);
                    }

                    if (string.IsNullOrEmpty(pk) == false)
                    {
                        en.PKVal = pk;
                        en.RetrieveFromDBSources();
                    }

                    foreach (string key in ap.HisHT.Keys)
                    {
                        if (key == "PKVal")
                        {
                            continue;
                        }
                        en.SetValByKey(key, ap.HisHT[key].ToString().Replace('^', '@'));
                    }
                    en.Save();
                    return(en.PKVal as string);
                }
                catch (Exception ex)
                {
                    if (en != null)
                    {
                        en.CheckPhysicsTable();
                    }
                    return("Error:" + ex.Message);
                }

            case "ChangeNodeType":
                var p = para1.Split(',');

                try
                {
                    if (p.Length != 3)
                    {
                        throw new Exception("@修改节点类型参数错误");
                    }

                    //var sql = "UPDATE WF_Node SET Icon='{0}' WHERE FK_Flow='{1}' AND NodeID='{2}'";
                    var sql = "UPDATE WF_Node SET RunModel={0} WHERE FK_Flow='{1}' AND NodeID={2}";
                    DBAccess.RunSQL(string.Format(sql, p[0], p[1], p[2]));
                    return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = true }));
                }
                catch (Exception ex)
                {
                    return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, msg = ex.Message }));
                }

            case "ChangeNodeIcon":
                p = para1.Split(',');

                try
                {
                    if (p.Length != 3)
                    {
                        throw new Exception("@修改节点图标参数错误");
                    }

                    var sql = "UPDATE WF_Node SET Icon='{0}' WHERE FK_Flow='{1}' AND NodeID={2}";
                    DBAccess.RunSQL(string.Format(sql, p[0], p[1], p[2]));
                    return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = true }));
                }
                catch (Exception ex)
                {
                    return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, msg = ex.Message }));
                }

            default:
                throw new Exception("@没有约定的执行标记:" + doWhat);
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (this.DoType == "View")
            {
                this.BindTrack_ViewWork();
                return;
            }

            if (this.DoType == "ViewSpecialWork")
            {
                this.BindTrack_ViewSpecialWork();
                return;
            }


            //this.AddTable("class='Table' cellpadding='0' cellspacing='0' border='0' style='width: 100%'");
            //this.AddTR();
            //this.AddTDGroupTitle("style='text-align:center'", "序");
            //this.AddTDGroupTitle("操作时间");
            //this.AddTDGroupTitle("表单"); //moved by liuxc,2014-12-18,应zhangqingpeng要求将此列提前
            //this.AddTDGroupTitle("从节点");
            //this.AddTDGroupTitle("人员");
            //this.AddTDGroupTitle("到节点");
            //this.AddTDGroupTitle("人员");
            //this.AddTDGroupTitle("到达时间");
            //this.AddTDGroupTitle("用时");
            //this.AddTDGroupTitle("活动");
            //this.AddTDGroupTitle("信息");
            //this.AddTDGroupTitle("执行人");
            //this.AddTREnd();

            //获取track.
            DataTable dt = BP.WF.Dev2Interface.DB_GenerTrack(this.FK_Flow, this.WorkID, this.FID).Tables["Track"];
            DataView  dv = dt.DefaultView;

            dv.Sort = "RDT";

            GenerWorkFlow gwf = new GenerWorkFlow();

            gwf.WorkID = this.WorkID;
            gwf.RetrieveFromDBSources();

            string currNodeID = "0";

            if (gwf.WFState != WFState.Complete)
            {
                currNodeID = gwf.FK_Node.ToString(); //获得当前运行到的节点如果流程完成则为O.
            }
            int    idx      = 1;
            string checkStr = "";

            #region    qin   改成时间轴的显示方式 15/7/15   如果不需要这种显示方式
            string str = "";//拼接字符串
            str += "<div class='content'>";
            str += "<div class='wrapper'>";
            str += "<div class='main'>";

            str += "<h1 class='title'>";
            str += "ccflow流程日志</h1>";
            str += "<div class='year'>";
            str += "<h2>";
            str += "<a href='#'>到达时间<i></i></a></h2>";

            str += "<div class='list'>";
            str += "<ul>";
            #endregion qin   改成时间轴的显示方式 15/7/15

            #region 开始循环添加数据
            foreach (DataRowView dr in dv)
            {
                ActionType at = (ActionType)int.Parse(dr[TrackAttr.ActionType].ToString());
                // 记录审核节点。
                if (at == ActionType.WorkCheck)
                {
                    checkStr = dr[TrackAttr.NDFrom].ToString(); //记录当前的审核节点id.
                }
                //审核信息过滤,
                if (at == ActionType.WorkCheck)
                {
                    if (currNodeID == checkStr)
                    {
                        continue;
                    }
                    //如果当前节点与审核信息节点一致,就说明当前人员的审核意见已经保存,但是工作还没有发送,就不让他显示。
                }

                if (at == ActionType.Forward)
                {
                    if (checkStr == dr[TrackAttr.NDFrom].ToString())
                    {
                        continue;
                    }
                }
                str += "<li  class='cls highlight' style=\"background: url('../../Img/Action/" + at.ToString() + ".png') no-repeat 235px 31px\">";
                //this.AddTR();
                //this.AddTDIdx(idx);

                DateTime dtt = DataType.ParseSysDateTime2DateTime(dr[TrackAttr.RDT].ToString());


                // this.AddTD(dtt.ToString("yy年MM月dd日HH:mm"));</br>
                str += "<p class='date'>" + dtt.ToString("yy年MM月dd日") + "  " + BP.DA.DataType.GetWeek((int)dtt.DayOfWeek);
                str += "</br>" + dtt.ToString("hh时mm分");
                str += "</br>" + BP.WF.Glo.GenerUserImgHtml(dr[TrackAttr.EmpFrom].ToString(), dr[TrackAttr.EmpFromT].ToString()) + "</p>";
                str += "<p class='intro'>" + dr[TrackAttr.NDFromT].ToString() + "</p>";
                str += "<div class='more'>";

                if (at == ActionType.Forward || at == ActionType.ForwardAskfor || at == ActionType.WorkCheck || at == ActionType.Order ||
                    at == ActionType.FlowOver || //added by liuxc,2014-12-3,正常结束结点也显示表单
                    at == ActionType.Skip)       //added by liuxc,2015-7-13,自动跳转的也显示表单
                {
                    //this.AddTD("<a class='easyui-linkbutton' data-options=\"iconCls:'icon-sheet'\" href=\"javascript:WinOpen('" + BP.WF.Glo.CCFlowAppPath + "WF/WFRpt.aspx?WorkID=" + dr[TrackAttr.WorkID].ToString() + "&FK_Flow=" + this.FK_Flow + "&FK_Node=" + dr[TrackAttr.NDFrom].ToString() + "&DoType=View&MyPK=" + dr[TrackAttr.MyPK].ToString() + "','" + dr[TrackAttr.MyPK].ToString() + "');\">表单</a>");
                    str += "<p>" + "<a class='easyui-linkbutton' data-options=\"iconCls:'icon-sheet'\" href=\"javascript:WinOpen('" + BP.WF.Glo.CCFlowAppPath + "WF/WFRpt.aspx?WorkID=" + dr[TrackAttr.WorkID].ToString() + "&FK_Flow=" + this.FK_Flow + "&FK_Node=" + dr[TrackAttr.NDFrom].ToString() + "&DoType=View&MyPK=" + dr[TrackAttr.MyPK].ToString() + "','" + dr[TrackAttr.MyPK].ToString() + "');\">表单</a>" + "</p>";
                }
                else
                {
                    // this.AddTD("");
                    //  str += "<p>" + "<a class='easyui-linkbutton' data-options=\"iconCls:'icon-sheet'\" >表单</a>" + "</p>";
                }
                //this.AddTD(dr[TrackAttr.NDFromT].ToString());
                //this.AddTD(BP.WF.Glo.GenerUserImgSmallerHtml(dr[TrackAttr.EmpFrom].ToString(), dr[TrackAttr.EmpFromT].ToString()));
                //this.AddTD("<img src='../../Img/Action/" + at.ToString() + ".png' class='ActionType' border=0/>" + BP.WF.Track.GetActionTypeT(at));

                if (at == ActionType.FlowOver ||
                    at == ActionType.CC ||
                    at == ActionType.UnSend)
                {
                    str += "<p></p>";
                    str += "<p></p>";
                }
                else
                {
                    str += "<p>到达节点:" + dr[TrackAttr.NDToT].ToString() + "</p>";
                }

                //增加两列,到达时间、用时 added by liuxc,2014-12-4
                if (idx > 1)
                {
                    var toTime = Convert.ToDateTime(dv[idx - 1 - 1][TrackAttr.RDT].ToString());
                    str += "<p>到达时间:" + toTime.ToString("yy年MM月dd日HH:mm") + " 用时:" + DataType.GetSpanTime(toTime, dtt) + "</p>";
                }

                // 删除信息.
                string tag = dr[TrackAttr.Tag].ToString();
                if (tag != null)
                {
                    tag = tag.Replace("~", "'");
                }

                string msg = DataType.ParseText2Html(dr[TrackAttr.Msg].ToString());
                switch (at)
                {
                case ActionType.CallChildenFlow:     //被调用父流程吊起。
                    if (string.IsNullOrEmpty(tag) == false)
                    {
                        AtPara        ap    = new AtPara(tag);
                        GenerWorkFlow mygwf = new GenerWorkFlow();
                        mygwf.WorkID = ap.GetValInt64ByKey("PWorkID");
                        if (mygwf.RetrieveFromDBSources() == 1)
                        {
                            msg = "<p>操作员:{" + dr[TrackAttr.EmpFromT].ToString() + "}在当前节点上,被父流程{" + mygwf.FlowName + "},<a target=b" + ap.GetValStrByKey("PWorkID") + " href='Track.aspx?WorkID=" + ap.GetValStrByKey("PWorkID") + "&FK_Flow=" + ap.GetValStrByKey("PFlowNo") + "' >" + msg + "</a></p>";
                        }
                        else
                        {
                            msg = "<p>操作员:{" + dr[TrackAttr.EmpFromT].ToString() + "}在当前节点上,被父流程调用{" + mygwf.FlowName + "},但是该流程被删除了.</p>" + tag;
                        }

                        msg = "<a target=b" + ap.GetValStrByKey("PWorkID") + " href='Track.aspx?WorkID=" + ap.GetValStrByKey("PWorkID") + "&FK_Flow=" + ap.GetValStrByKey("PFlowNo") + "' >" + msg + "</a>";
                    }
                    break;

                case ActionType.StartChildenFlow:     //吊起子流程。
                    if (string.IsNullOrEmpty(tag) == false)
                    {
                        if (tag.Contains("Sub"))
                        {
                            tag = tag.Replace("Sub", "C");
                        }

                        AtPara        ap    = new AtPara(tag);
                        GenerWorkFlow mygwf = new GenerWorkFlow();
                        mygwf.WorkID = ap.GetValInt64ByKey("CWorkID");
                        if (mygwf.RetrieveFromDBSources() == 1)
                        {
                            msg  = "<p>操作员:{" + dr[TrackAttr.EmpFromT].ToString() + "}在当前节点上调用了子流程{" + mygwf.FlowName + "}, <a target=b" + ap.GetValStrByKey("CWorkID") + " href='Track.aspx?WorkID=" + ap.GetValStrByKey("CWorkID") + "&FK_Flow=" + ap.GetValStrByKey("CFlowNo") + "' >" + msg + "</a></p>";
                            msg += "<p>当前子流程状态:{" + mygwf.WFStateText + "},运转到:{" + mygwf.NodeName + "},最后处理人{" + mygwf.TodoEmps + "},最后处理时间{" + mygwf.RDT + "}。</p>";
                        }
                        else
                        {
                            msg = "<p>操作员:{" + dr[TrackAttr.EmpFromT].ToString() + "}在当前节点上调用了子流程{" + mygwf.FlowName + "},但是该流程被删除了.</p>" + tag;
                        }
                    }
                    break;

                default:
                    break;
                }

                msg = msg.Replace("\"", "");

                str += "<p>" + msg + "</p>";
                str += "</div>";
                str += "</li>";
                idx++;
            } //结束循环.
            //this.AddTableEnd();
            #endregion

            if (this.CCID != null)
            {
                CCList cl = new CCList();
                cl.MyPK = this.CCID;
                cl.RetrieveFromDBSources();
                // this.AddFieldSet(cl.Title);
                // this.Add("抄送人:" + cl.Rec + ", 抄送日期:" + cl.RDT);
                // this.AddHR();
                // this.Add(cl.DocHtml);
                // this.AddFieldSetEnd();
                str += "<li  class='cls highlight' style=\"background: url('./Img/Action/circle.png') no-repeat 235px 31px\">";
                str += "<p class='date'>&nbsp;</p>";
                str += "<p class='intro'>" + cl.Title + "</p>";
                str += "<p class='version'>&nbsp;</p>";
                str += "<div class='more'>";
                str += "<p>抄送人:" + cl.Rec + "</p>";
                str += "<p>抄送日期:" + cl.RDT + "</p>";
                str += "</div>";
                str += "</li>";
                if (cl.HisSta == CCSta.UnRead)
                {
                    cl.HisSta = CCSta.Read;
                    cl.Update();
                }
            }

            str += "</ul>";
            str += "</div>";
            str += "</div>";
            str += "</div>";
            str += "</div>";
            str += "</div>";
            //this.Clear();
            HiddenField1.Value = str.ToString();
        }
Exemplo n.º 28
0
        void btn_Click(object sender, EventArgs e)
        {
            UserRegedit ur = new UserRegedit();

            ur.MyPK = this.MyPK;
            ur.RetrieveFromDBSources();
            ur.FK_Emp = WebUser.No;
            ur.CfgKey = this.EnsName + "_SearchAttrs";

            Entity en   = BP.En.ClassFactory.GetEns(this.EnsName).GetNewEntity;
            Attr   attr = en.EnMap.GetAttrByKey(this.AttrKey);

            string cfgVal  = ur.MVals;
            AtPara ap      = new AtPara(cfgVal);
            string old_Val = ap.GetValStrByKey(this.AttrKey);

            string keys = "@" + this.AttrKey + "=";

            if (attr.IsEnum)
            {
                SysEnums ses = new SysEnums(attr.UIBindKey);
                foreach (SysEnum item in ses)
                {
                    if (this.Pub1.GetCBByID("CB_" + item.IntKey).Checked == false)
                    {
                        continue;
                    }
                    keys += "." + item.IntKey + ".";
                }

                if (ur.MVals.Contains("@" + this.AttrKey))
                {
                    ur.MVals = ur.MVals.Replace("@" + this.AttrKey + "=" + old_Val, keys);
                }
                else
                {
                    ur.MVals = ur.MVals + keys;
                }

                ur.DirectUpdate();
            }
            else
            {
                Entities ens = BP.En.ClassFactory.GetEns(attr.UIBindKey);
                ens.RetrieveAll();
                foreach (Entity item in ens)
                {
                    if (this.Pub1.GetCBByID("CB_" + item.GetValStrByKey(attr.UIRefKeyValue)).Checked == false)
                    {
                        continue;
                    }
                    keys += "." + item.GetValStrByKey(attr.UIRefKeyValue) + ".";
                }

                if (ur.MVals.Contains("@" + this.AttrKey))
                {
                    ur.MVals = ur.MVals.Replace("@" + this.AttrKey + "=" + old_Val, keys);
                }
                else
                {
                    ur.MVals = ur.MVals + keys;
                }

                ur.DirectUpdate();
            }
            keys = keys.Replace("@" + this.AttrKey + "=", "");
            this.WinClose(keys);
        }
Exemplo n.º 29
0
        /// <summary>
        /// 执行事件
        /// </summary>
        /// <param name="eventType">事件类型</param>
        /// <param name="en">实体参数</param>
        public string DoIt(string eventType, Node currNode, Entity en, string atPara)
        {
            //他的节点.
            this.HisNode = currNode;
            this.HisEn   = en;

            #region 处理参数.
            Row r = en.Row;
            try
            {
                //系统参数.
                r.Add("FK_MapData", en.ClassID);
            }
            catch
            {
                r["FK_MapData"] = en.ClassID;
            }

            if (atPara != null)
            {
                AtPara ap = new AtPara(atPara);
                foreach (string s in ap.HisHT.Keys)
                {
                    try
                    {
                        r.Add(s, ap.GetValStrByKey(s));
                    }
                    catch
                    {
                        r[s] = ap.GetValStrByKey(s);
                    }
                }
            }

            if (SystemConfig.IsBSsystem == true)
            {
                /*如果是bs系统, 就加入外部url的变量.*/
                foreach (string key in System.Web.HttpContext.Current.Request.QueryString)
                {
                    string val = System.Web.HttpContext.Current.Request.QueryString[key];
                    try
                    {
                        r.Add(key, val);
                    }
                    catch
                    {
                        r[key] = val;
                    }
                }
            }
            this.SysPara = r;
            #endregion 处理参数.

            #region 执行事件.
            switch (eventType)
            {
            case EventListOfNode.SendWhen:
                return(this.SendWhen());

            case EventListOfNode.SendSuccess:
                return(this.SendSuccess());

            case EventListOfNode.SendError:
                return(this.SendError());

            case EventListOfNode.ReturnBefore:
                return(this.ReturnBefore());

            case EventListOfNode.ReturnAfter:
                return(this.ReturnAfter());

            case EventListOfNode.UndoneBefore:
                return(this.UnSendBefore());

            case EventListOfNode.UndoneAfter:
                return(this.UnSendAfter());

            case EventListOfNode.SaveBefore:
                return(this.SaveBefore());

            case EventListOfNode.SaveAfter:
                return(this.SaveAfter());

            case EventListOfNode.FrmLoadBefore:
                return(this.FrmLoadBefore());

            case EventListOfNode.FrmLoadAfter:
                return(this.FrmLoadAfter());

            default:
                throw new Exception("@没有判断的事件类型:" + eventType);
                break;
            }
            #endregion 执行事件.

            return(null);
        }
Exemplo n.º 30
0
        public string DoSaveFlow(string fk_flow, string nodes, string dirs, string labes)
        {
            LetAdminLogin("CH", true);
            try
            {
                //处理方向。
                string sql = "Delete FROM WF_Direction WHERE FK_Flow='" + fk_flow + "'";
                DBAccess.RunSQL(sql);

                string[] mydirs = dirs.Split('~');
                foreach (string dir in mydirs)
                {
                    if (string.IsNullOrEmpty(dir))
                    {
                        continue;
                    }

                    AtPara ap = new AtPara(dir);

                    string dots = ap.GetValStrByKey("Dots").Replace('#', '@');
                    sql = "INSERT INTO WF_Direction (Node,ToNode,FK_Flow,DirType,IsCanBack,Dots,MyPK) VALUES ("
                          + ap.GetValIntByKey("Node") + "," + ap.GetValIntByKey("ToNode") + ",'" + fk_flow
                          + "'," + ap.GetValIntByKey("DirType") + "," + ap.GetValIntByKey("IsCanBack")
                          + "," + (dots == string.Empty ? "null" : "'" + dots + "'") + ",'" + ap.GetValStrByKey("MyPK") + "')";
                    DBAccess.RunSQL(sql);
                }

                //处理节点。
                Flow f1 = new Flow(fk_flow);

                string[] nds = nodes.Split('~');
                foreach (string nd in nds)
                {
                    if (string.IsNullOrEmpty(nd))
                    {
                        continue;
                    }

                    AtPara ap     = new AtPara(nd);
                    Node   mynode = new Node(ap.GetValIntByKey("NodeID"));
                    if (mynode.NodeID == 0)
                    {
                        f1.Paras = string.Format("@StartNodeX={0}@StartNodeY={1}", ap.GetValStrByKey("X"), ap.GetValStrByKey("Y"));
                    }
                    else if (mynode.NodeID == 1)
                    {
                        f1.Paras += string.Format("@EndNodeX={0}@EndNodeY={1}", ap.GetValStrByKey("X"), ap.GetValStrByKey("Y"));
                    }
                    else
                    {
                        SetNodeProperties(mynode, ap.GetValStrByKey("Name"),
                                          ap.GetValIntByKey("X"),
                                          ap.GetValIntByKey("Y"),
                                          ap.GetValIntByKey("HisRunModel"));//NodeType

                        mynode.DirectUpdate();
                        //   mynode.Save();
                    }
                }

                f1.Save();

                //处理标签。
                string[] mylabs = labes.Split('~');
                foreach (string lab in mylabs)
                {
                    if (string.IsNullOrEmpty(lab))
                    {
                        continue;
                    }

                    AtPara  ap = new AtPara(lab);
                    LabNote ln = new LabNote();
                    ln.MyPK    = ap.GetValStrByKey("MyPK");
                    ln.FK_Flow = fk_flow;
                    ln.Name    = ap.GetValStrByKey("Label");
                    ln.X       = ap.GetValIntByKey("X");
                    ln.Y       = ap.GetValIntByKey("Y");
                    ln.Save();
                }
            }
            catch (Exception ex)
            {
                return(ex.Message);
            }
            return(null);
        }