Exemplo n.º 1
0
        /// <summary>
        /// 分流支流
        /// </summary>
        /// <param name="fl"></param>
        public void BindBrach(Flow fl)
        {
            //  WorkFlow wf = new WorkFlow(fl, this.WorkID, this.FID);
            WorkNodes wns = new WorkNodes();

            wns.GenerByFID(fl, this.FID);

            this.AddH4("关于(" + fl.Name + ")工作报告");
            this.AddHR();

            Node nd = fl.HisStartNode;

            GenerWorkFlow gwf = new GenerWorkFlow(this.WorkID);

            this.Add("流程发起人:" + gwf.StarterName + ",发起日期:" + gwf.RDT + " ;流程状态:" + gwf.WFStateText);

            ReturnWorks rws = new ReturnWorks();

            rws.Retrieve(ReturnWorkAttr.WorkID, this.WorkID);

            ForwardWorks fws = new ForwardWorks();

            fws.Retrieve(ReturnWorkAttr.WorkID, this.WorkID);

            //  this.BindWorkNodes(wns, rws, fws);

            this.AddHR("流程报告结束");
        }
Exemplo n.º 2
0
        public void ViewWork()
        {
            ReturnWorks rws = new ReturnWorks();

            rws.Retrieve(ReturnWorkAttr.ReturnToNode, this.FK_Node, ReturnWorkAttr.WorkID, this.WorkID);

            ForwardWorks fws = new ForwardWorks();

            fws.Retrieve(ForwardWorkAttr.FK_Node, this.FK_Node, ForwardWorkAttr.WorkID, this.WorkID);

            Node nd = new Node(this.FK_Node);
            Work wk = nd.HisWork;

            wk.OID = this.WorkID;
            wk.RetrieveFromDBSources();
            this.AddB(wk.EnDesc);
            this.ADDWork(wk, rws, fws, this.FK_Node);
        }
Exemplo n.º 3
0
    public string GenerWorkNode(string fk_flow, int fk_node, Int64 workID, Int64 fid, string userNo)
    {
        try
        {
            Emp emp = new Emp(userNo);
            BP.Web.WebUser.SignInOfGener(emp);

            MapData md = new MapData();
            md.No = "ND" + fk_node;
            if (md.RetrieveFromDBSources() == 0)
            {
                throw new Exception("装载错误,该表单ID=" + md.No + "丢失,请修复一次流程重新加载一次.");
            }

            DataSet myds = md.GenerHisDataSet();

            // 节点数据.
            Node nd = new Node(fk_node);
            myds.Tables.Add(nd.ToDataTableField("WF_Node"));

            //节点标签数据.
            BtnLab btnLab = new BtnLab(fk_node);
            myds.Tables.Add(btnLab.ToDataTableField("WF_BtnLab"));

            // 流程数据.
            Flow fl = new Flow(fk_flow);
            myds.Tables.Add(fl.ToDataTableField("WF_Flow"));

            //.工作数据放里面去, 放进去前执行一次装载前填充事件.
            BP.WF.Work wk = nd.HisWork;
            wk.OID = workID;
            wk.RetrieveFromDBSources();
            wk.ResetDefaultVal();
            // 执行一次装载前填充.
            string msg = md.FrmEvents.DoEventNode(FrmEventList.FrmLoadBefore, wk);
            if (string.IsNullOrEmpty(msg) == false)
            {
                return(msg);
            }
            myds.Tables.Add(wk.ToDataTableField("Main"));

            #region 获取明细表数据,并把它加入dataset里.
            if (md.MapDtls.Count > 0)
            {
                foreach (MapDtl dtl in md.MapDtls)
                {
                    GEDtls      dtls = new GEDtls(dtl.No);
                    QueryObject qo   = null;
                    try
                    {
                        qo = new QueryObject(dtl);
                        switch (dtl.DtlOpenType)
                        {
                        case DtlOpenType.ForEmp:      // 按人员来控制.
                            qo.AddWhere(GEDtlAttr.RefPK, workID);
                            qo.addAnd();
                            qo.AddWhere(GEDtlAttr.Rec, WebUser.No);
                            break;

                        case DtlOpenType.ForWorkID:     // 按工作ID来控制
                            qo.AddWhere(GEDtlAttr.RefPK, workID);
                            break;

                        case DtlOpenType.ForFID:     // 按流程ID来控制.
                            qo.AddWhere(GEDtlAttr.FID, workID);
                            break;
                        }
                    }
                    catch
                    {
                        dtls.GetNewEntity.CheckPhysicsTable();
                    }
                    DataTable dtDtl = qo.DoQueryToTable();
                    dtDtl.TableName = dtl.No; //修改明细表的名称.
                    myds.Tables.Add(dtDtl);   //加入这个明细表.
                }
            }
            #endregion

            //把流程信息表发送过去.
            GenerWorkFlow gwf = new GenerWorkFlow();
            gwf.WorkID = workID;
            myds.Tables.Add(gwf.ToDataTableField("WF_GenerWorkFlow"));

            if (gwf.WFState == WFState.Forward)
            {
                //如果是转发.
                BP.WF.ForwardWorks fws = new ForwardWorks();
                fws.Retrieve(ForwardWorkAttr.WorkID, workID, ForwardWorkAttr.FK_Node, fk_node);
                myds.Tables.Add(fws.ToDataTableField("WF_ForwardWork"));
            }

            if (gwf.WFState == WFState.ReturnSta)
            {
                //如果是退回.
                ReturnWorks rts = new ReturnWorks();
                rts.Retrieve(ReturnWorkAttr.WorkID, workID, ReturnWorkAttr.ReturnToNode, fk_node);
                myds.Tables.Add(rts.ToDataTableField("WF_ForwardWork"));
            }

            if (gwf.WFState == WFState.HungUp)
            {
                //如果是挂起.
                HungUps hups = new HungUps();
                hups.Retrieve(HungUpAttr.WorkID, workID, HungUpAttr.FK_Node, fk_node);
                myds.Tables.Add(hups.ToDataTableField("WF_HungUp"));
            }

            //放入track信息.
            Paras ps = new Paras();
            ps.SQL = "SELECT * FROM ND" + int.Parse(fk_flow) + "Track WHERE WorkID=" + BP.SystemConfig.AppCenterDBVarStr + "WorkID";
            ps.Add("WorkID", workID);
            DataTable dt = DBAccess.RunSQLReturnTable(ps);
            dt.TableName = "Track";
            myds.Tables.Add(dt);

            //写入数据.
            myds.WriteXml("c:\\sss.xml");

            //转化成它所能识别的格式.
            return(Silverlight.DataSetConnector.Connector.ToXml(myds));
        }
        catch (Exception ex)
        {
            Log.DebugWriteError(ex.StackTrace);
            return("@生成工作FK_Flow=" + fk_flow + ",FK_Node=" + fk_node + ",WorkID=" + workID + ",FID=" + fid + "错误,错误信息:" + ex.Message);
        }
    }
Exemplo n.º 4
0
        /// <summary>
        /// 增加一个工作
        /// </summary>
        /// <param name="en"></param>
        /// <param name="rws"></param>
        /// <param name="fws"></param>
        /// <param name="nodeId"></param>
        public void ADDWork(Work en, ReturnWorks rws, ForwardWorks fws, int nodeId)
        {
            this.BindViewEn(en, "width=90%");
            foreach (ReturnWork rw in rws)
            {
                if (rw.ReturnToNode != nodeId)
                {
                    continue;
                }

                this.AddBR();
                this.AddMsgOfInfo("退回信息:", rw.NoteHtml);
            }

            foreach (ForwardWork fw in fws)
            {
                if (fw.FK_Node != nodeId)
                {
                    continue;
                }

                this.AddBR();
                this.AddMsgOfInfo("转发信息:", fw.NoteHtml);
            }


            string refstrs = "";

            if (en.IsEmpty)
            {
                refstrs += "";
                return;
            }

            string keys = "&PK=" + en.PKVal.ToString();

            foreach (Attr attr in en.EnMap.Attrs)
            {
                if (attr.MyFieldType == FieldType.Enum ||
                    attr.MyFieldType == FieldType.FK ||
                    attr.MyFieldType == FieldType.PK ||
                    attr.MyFieldType == FieldType.PKEnum ||
                    attr.MyFieldType == FieldType.PKFK)
                {
                    keys += "&" + attr.Key + "=" + en.GetValStrByKey(attr.Key);
                }
            }
            Entities hisens = en.GetNewEntities;

            #region 加入他的明细
            EnDtls enDtls = en.EnMap.Dtls;
            if (enDtls.Count > 0)
            {
                foreach (EnDtl enDtl in enDtls)
                {
                    string url = "WFRptDtl.aspx?RefPK=" + en.PKVal.ToString() + "&EnName=" + enDtl.Ens.GetNewEntity.ToString();
                    int    i   = 0;
                    try
                    {
                        i = DBAccess.RunSQLReturnValInt("SELECT COUNT(*) FROM " + enDtl.Ens.GetNewEntity.EnMap.PhysicsTable + " WHERE " + enDtl.RefKey + "='" + en.PKVal + "'");
                    }
                    catch
                    {
                        i = DBAccess.RunSQLReturnValInt("SELECT COUNT(*) FROM " + enDtl.Ens.GetNewEntity.EnMap.PhysicsTable + " WHERE " + enDtl.RefKey + "=" + en.PKVal);
                    }

                    if (i == 0)
                    {
                        refstrs += "[<a href=\"javascript:WinOpen('" + url + "','u8');\" >" + enDtl.Desc + "</a>]";
                    }
                    else
                    {
                        refstrs += "[<a  href=\"javascript:WinOpen('" + url + "','u8');\" >" + enDtl.Desc + "-" + i + "</a>]";
                    }
                }
            }
            #endregion

            #region 加入一对多的实体编辑
            AttrsOfOneVSM oneVsM = en.EnMap.AttrsOfOneVSM;
            if (oneVsM.Count > 0)
            {
                foreach (AttrOfOneVSM vsM in oneVsM)
                {
                    string url = "UIEn1ToM.aspx?EnsName=" + en.ToString() + "&AttrKey=" + vsM.EnsOfMM.ToString() + keys;
                    string sql = "SELECT COUNT(*)  as NUM FROM " + vsM.EnsOfMM.GetNewEntity.EnMap.PhysicsTable + " WHERE " + vsM.AttrOfOneInMM + "='" + en.PKVal + "'";
                    int    i   = DBAccess.RunSQLReturnValInt(sql);

                    if (i == 0)
                    {
                        refstrs += "[<a href='" + url + "' target='_blank' >" + vsM.Desc + "</a>]";
                    }
                    else
                    {
                        refstrs += "[<a href='" + url + "' target='_blank' >" + vsM.Desc + "-" + i + "</a>]";
                    }
                }
            }
            #endregion

            #region 加入他门的相关功能
            //			SysUIEnsRefFuncs reffuncs = en.GetNewEntities.HisSysUIEnsRefFuncs ;
            //			if ( reffuncs.Count > 0  )
            //			{
            //				foreach(SysUIEnsRefFunc en1 in reffuncs)
            //				{
            //					string url="RefFuncLink.aspx?RefFuncOID="+en1.OID.ToString()+"&MainEnsName="+hisens.ToString()+keys;
            //					//int i=DBAccess.RunSQLReturnValInt("SELECT COUNT(*) FROM "+vsM.EnsOfMM.GetNewEntity.EnMap.PhysicsTable+" WHERE "+vsM.AttrOfMInMM+"='"+en.PKVal+"'");
            //					refstrs+="[<a href='"+url+"' target='_blank' >"+en1.Name+"</a>]";
            //					//refstrs+="编辑: <a href=\"javascript:window.open(RefFuncLink.aspx?RefFuncOID="+en1.OID.ToString()+"&MainEnsName="+ens.ToString()+"'> )\" > "+en1.Name+"</a>";
            //					//var newWindow= window.open( this.Request.ApplicationPath+'/Comm/'+'RefFuncLink.aspx?RefFuncOID='+OID+'&MainEnsName='+ CurrEnsName +CurrKeys,'chosecol', 'width=100,top=400,left=400,height=50,scrollbars=yes,resizable=yes,toolbar=false,location=false' );
            //					//refstrs+="编辑: <a href=\"javascript:EnsRefFunc('"+en1.OID.ToString()+"')\" > "+en1.Name+"</a>";
            //					//refstrs+="编辑:"+en1.Name+"javascript: EnsRefFunc('"+en1.OID.ToString()+"',)";
            //					//this.AddItem(en1.Name,"EnsRefFunc('"+en1.OID.ToString()+"')",en1.Icon);
            //				}
            //			}
            #endregion

            // 不知道为什么去掉。
            this.Add(refstrs);
        }