Пример #1
0
        /// <summary>
        /// 得到流程图
        /// </summary>
        /// <param name="keyValue">业务表ID</param>
        /// <param name="modulename">逐级审核模块名</param>
        /// <returns></returns>
        public Flow GetFlow(string keyValue, string modulename)
        {
            List <nodes>       nlist  = new List <nodes>();
            List <lines>       llist  = new List <lines>();
            Operator           user   = ERCHTMS.Code.OperatorProvider.Provider.Current();
            DataTable          nodeDt = GetCheckInfo(keyValue, modulename, user);
            LifthoistjobEntity entity = GetEntity(keyValue);
            Flow flow = new Flow();

            flow.title    = "";
            flow.initNum  = 22;
            flow.activeID = entity.FLOWID;
            if (nodeDt != null && nodeDt.Rows.Count > 0)
            {
                #region 创建node对象

                for (int i = 0; i < nodeDt.Rows.Count; i++)
                {
                    DataRow dr    = nodeDt.Rows[i];
                    nodes   nodes = new nodes();
                    nodes.alt     = true;
                    nodes.isclick = false;
                    nodes.css     = "";
                    nodes.id      = dr["id"].ToString(); //主键
                    nodes.img     = "";
                    nodes.name    = dr["flowname"].ToString();
                    nodes.type    = "stepnode";
                    nodes.width   = 150;
                    nodes.height  = 60;
                    //位置
                    int m = i % 4;
                    int n = i / 4;
                    if (m == 0)
                    {
                        nodes.left = 120;
                    }
                    else
                    {
                        nodes.left = 120 + ((150 + 60) * m);
                    }
                    if (n == 0)
                    {
                        nodes.top = 54;
                    }
                    else
                    {
                        nodes.top = (n * 100) + 54;
                    }
                    setInfo sinfo = new setInfo();
                    sinfo.NodeName = nodes.name;
                    //审核记录
                    if (dr["auditdeptname"] != null && !string.IsNullOrEmpty(dr["auditdeptname"].ToString()))
                    {
                        sinfo.Taged = 1;
                        List <NodeDesignateData> nodelist          = new List <NodeDesignateData>();
                        NodeDesignateData        nodedesignatedata = new NodeDesignateData();
                        DateTime auditdate;
                        DateTime.TryParse(dr["auditdate"].ToString(), out auditdate);
                        nodedesignatedata.createdate = auditdate.ToString("yyyy-MM-dd HH:mm");
                        nodedesignatedata.creatdept  = dr["auditdeptname"].ToString();
                        nodedesignatedata.createuser = dr["auditusername"].ToString();
                        nodedesignatedata.status     = dr["auditstate"].ToString() == "1" ? "同意" : "不同意";
                        if (i == 0)
                        {
                            nodedesignatedata.prevnode = "无";
                        }
                        else
                        {
                            nodedesignatedata.prevnode = nodeDt.Rows[i - 1]["flowname"].ToString();
                        }

                        nodelist.Add(nodedesignatedata);
                        sinfo.NodeDesignateData = nodelist;
                        nodes.setInfo           = sinfo;
                    }
                    else
                    {
                        List <NodeDesignateData> nodelist          = new List <NodeDesignateData>();
                        NodeDesignateData        nodedesignatedata = new NodeDesignateData();
                        nodedesignatedata.createdate = "无";
                        string executedept = string.Empty;
                        highriskcommonapplyservice.GetExecutedept(entity.WORKDEPTTYPE.ToString(), entity.CONSTRUCTIONUNITID, entity.ENGINEERINGID, out executedept);                                             //获取执行部门
                        string createdetpid           = departmentservice.GetEntityByCode(entity.CREATEUSERDEPTCODE).IsEmpty() ? "" : departmentservice.GetEntityByCode(entity.CREATEUSERDEPTCODE).DepartmentId; //获取创建部门ID
                        string outsouringengineerdept = string.Empty;
                        highriskcommonapplyservice.GetOutsouringengineerDept(entity.CONSTRUCTIONUNITID, out outsouringengineerdept);
                        string   accountstr                 = manypowercheckservice.GetApproveUserAccount(dr["id"].ToString(), entity.ID, "", entity.SPECIALTYTYPE, executedept, outsouringengineerdept, createdetpid, "", ""); //获取审核人账号
                        string   outtransferuseraccount     = dr["outtransferuseraccount"].IsEmpty() ? "" : dr["outtransferuseraccount"].ToString();                                                                            //转交申请人
                        string   intransferuseraccount      = dr["intransferuseraccount"].IsEmpty() ? "" : dr["intransferuseraccount"].ToString();                                                                              //转交接收人
                        string[] outtransferuseraccountlist = outtransferuseraccount.Split(',');
                        string[] intransferuseraccountlist  = intransferuseraccount.Split(',');
                        foreach (var item in intransferuseraccountlist)
                        {
                            if (!item.IsEmpty() && !accountstr.Contains(item + ","))
                            {
                                accountstr += (item + ",");//将转交接收人加入审核账号中
                            }
                        }
                        foreach (var item in outtransferuseraccountlist)
                        {
                            if (!item.IsEmpty() && accountstr.Contains(item + ","))
                            {
                                accountstr = accountstr.Replace(item + ",", "");//将转交申请人从审核账号中移除
                            }
                        }

                        DataTable dtuser    = userservice.GetUserTable(accountstr.Split(','));
                        string[]  usernames = dtuser.AsEnumerable().Select(d => d.Field <string>("realname")).ToArray();
                        string[]  deptnames = dtuser.AsEnumerable().Select(d => d.Field <string>("deptname")).ToArray().GroupBy(t => t).Select(p => p.Key).ToArray();
                        nodedesignatedata.createuser = usernames.Length > 0 ? string.Join(",", usernames) : "无";
                        nodedesignatedata.creatdept  = deptnames.Length > 0 ? string.Join(",", deptnames) : "无";

                        nodedesignatedata.status = "无";
                        if (i == 0)
                        {
                            nodedesignatedata.prevnode = "无";
                        }
                        else
                        {
                            nodedesignatedata.prevnode = nodeDt.Rows[i - 1]["flowname"].ToString();
                        }

                        nodelist.Add(nodedesignatedata);
                        sinfo.NodeDesignateData = nodelist;
                        nodes.setInfo           = sinfo;
                    }
                    nlist.Add(nodes);
                }

                //流程结束节点
                nodes nodes_end = new nodes();
                nodes_end.alt     = true;
                nodes_end.isclick = false;
                nodes_end.css     = "";
                nodes_end.id      = Guid.NewGuid().ToString();
                nodes_end.img     = "";
                nodes_end.name    = "流程结束";
                nodes_end.type    = "endround";
                nodes_end.width   = 150;
                nodes_end.height  = 60;
                //取最后一流程的位置,相对排位
                nodes_end.left = nlist[nlist.Count - 1].left;
                nodes_end.top  = nlist[nlist.Count - 1].top + 100;
                nlist.Add(nodes_end);

                //如果状态为审核通过或不通过,流程结束进行标识
                if (entity.AUDITSTATE == 2)
                {
                    setInfo sinfo = new setInfo();
                    sinfo.NodeName = nodes_end.name;
                    sinfo.Taged    = 1;
                    List <NodeDesignateData> nodelist          = new List <NodeDesignateData>();
                    NodeDesignateData        nodedesignatedata = new NodeDesignateData();

                    //取流程结束时的节点信息
                    DataRow[] end_rows = nodeDt.Select("auditusername is not null");
                    DataRow   end_row  = end_rows[end_rows.Count() - 1];
                    DateTime  auditdate;
                    DateTime.TryParse(end_row["auditdate"].ToString(), out auditdate);
                    nodedesignatedata.createdate = auditdate.ToString("yyyy-MM-dd HH:mm");
                    nodedesignatedata.creatdept  = end_row["auditdeptname"].ToString();
                    nodedesignatedata.createuser = end_row["auditusername"].ToString();
                    nodedesignatedata.status     = end_row["auditstate"].ToString() == "1" ? "同意" : "不同意";
                    nodedesignatedata.prevnode   = end_row["flowname"].ToString();

                    nodelist.Add(nodedesignatedata);
                    sinfo.NodeDesignateData = nodelist;
                    nodes_end.setInfo       = sinfo;
                }

                #endregion

                #region 创建line对象

                for (int i = 0; i < nodeDt.Rows.Count; i++)
                {
                    lines lines = new lines();
                    lines.alt  = true;
                    lines.id   = Guid.NewGuid().ToString();
                    lines.from = nodeDt.Rows[i]["id"].ToString();
                    if (i < nodeDt.Rows.Count - 1)
                    {
                        lines.to = nodeDt.Rows[i + 1]["id"].ToString();
                    }
                    lines.name = "";
                    lines.type = "sl";
                    llist.Add(lines);
                }

                lines lines_end = new lines();
                lines_end.alt  = true;
                lines_end.id   = Guid.NewGuid().ToString();
                lines_end.from = nodeDt.Rows[nodeDt.Rows.Count - 1]["id"].ToString();
                lines_end.to   = nodes_end.id;
                llist.Add(lines_end);
                #endregion

                flow.nodes = nlist;
                flow.lines = llist;
            }
            return(flow);
        }
Пример #2
0
        /// <summary>
        /// 得到流程图
        /// </summary>
        /// <param name="keyValue">业务表ID</param>
        /// <param name="modulename">逐级审核模块名</param>
        /// <returns></returns>
        public Flow GetFlow(string keyValue, string modulename)
        {
            List <nodes> nlist  = new List <nodes>();
            List <lines> llist  = new List <lines>();
            Operator     user   = ERCHTMS.Code.OperatorProvider.Provider.Current();
            DataTable    nodeDt = GetCheckInfo(keyValue, modulename, user);
            ToolsEntity  entity = GetEntity(keyValue);
            Flow         flow   = new Flow();

            flow.title    = "";
            flow.initNum  = 22;
            flow.activeID = entity.FlowId;
            if (nodeDt != null && nodeDt.Rows.Count > 0)
            {
                #region 创建node对象

                for (int i = 0; i < nodeDt.Rows.Count; i++)
                {
                    DataRow dr    = nodeDt.Rows[i];
                    nodes   nodes = new nodes();
                    nodes.alt     = true;
                    nodes.isclick = false;
                    nodes.css     = "";
                    nodes.id      = dr["id"].ToString(); //主键
                    int result = nlist.Where(t => t.id == nodes.id).Count();
                    if (result > 0)                      //判断当同一流程被审核两次时候只产生一个节点
                    {
                        continue;
                    }
                    nodes.img    = "";
                    nodes.name   = dr["flowname"].ToString();
                    nodes.type   = "stepnode";
                    nodes.width  = 150;
                    nodes.height = 60;
                    //位置
                    int m = i % 4;
                    int n = i / 4;
                    if (m == 0)
                    {
                        nodes.left = 120;
                    }
                    else
                    {
                        nodes.left = 120 + ((150 + 60) * m);
                    }
                    if (n == 0)
                    {
                        nodes.top = 54;
                    }
                    else
                    {
                        nodes.top = (n * 100) + 54;
                    }
                    setInfo sinfo = new setInfo();
                    sinfo.NodeName = nodes.name;
                    //审核记录
                    if (dr["auditdept"] != null && !string.IsNullOrEmpty(dr["auditdept"].ToString()))
                    {
                        sinfo.Taged = 1;
                        List <NodeDesignateData> nodelist = new List <NodeDesignateData>();
                        foreach (DataRow item in nodeDt.Select(" id ='" + dr["id"] + "'"))
                        {
                            NodeDesignateData nodedesignatedata = new NodeDesignateData();
                            DateTime          auditdate;
                            DateTime.TryParse(item["audittime"].ToString(), out auditdate);
                            nodedesignatedata.createdate = auditdate.ToString("yyyy-MM-dd HH:mm");
                            nodedesignatedata.creatdept  = item["auditdept"].ToString();
                            nodedesignatedata.createuser = item["auditpeople"].ToString();
                            nodedesignatedata.status     = item["auditresult"].ToString() == "0" ? "同意" : "不同意";
                            if (i == 0)
                            {
                                nodedesignatedata.prevnode = "无";
                            }
                            else
                            {
                                nodedesignatedata.prevnode = nodeDt.Rows[i - 1]["flowname"].ToString();
                            }
                            nodelist.Add(nodedesignatedata);
                        }

                        sinfo.NodeDesignateData = nodelist;
                        nodes.setInfo           = sinfo;
                    }
                    else
                    {
                        List <NodeDesignateData> nodelist          = new List <NodeDesignateData>();
                        NodeDesignateData        nodedesignatedata = new NodeDesignateData();
                        nodedesignatedata.createdate = "无";
                        var       engineerEntity  = outsouringengineerservice.GetEntity(entity.OUTENGINEERID);
                        var       excutdept       = departmentservice.GetEntity(engineerEntity.ENGINEERLETDEPTID).DepartmentId;
                        var       createdept      = departmentservice.GetEntityByCode(entity.CREATEUSERDEPTCODE).DepartmentId;
                        var       outengineerdept = departmentservice.GetEntity(engineerEntity.OUTPROJECTID).DepartmentId;
                        var       supervisordept  = string.IsNullOrEmpty(engineerEntity.SupervisorId) ? "" : departmentservice.GetEntity(engineerEntity.SupervisorId).DepartmentId;
                        string    useridstr       = powerCheck.GetApproveUserId(dr["id"].ToString(), entity.TOOLSID, "", entity.SpecialtyType, excutdept, outengineerdept, createdept, "", "", supervisordept, entity.OUTENGINEERID); //获取审核人账号
                        DataTable dtuser          = UserService.GetUserTable(useridstr.Split(','));
                        string[]  usernames       = dtuser.AsEnumerable().Select(d => d.Field <string>("realname")).ToArray();
                        string[]  deptnames       = dtuser.AsEnumerable().Select(d => d.Field <string>("deptname")).ToArray().GroupBy(t => t).Select(p => p.Key).ToArray();
                        nodedesignatedata.createuser = usernames.Length > 0 ? string.Join(",", usernames) : "无";
                        nodedesignatedata.creatdept  = deptnames.Length > 0 ? string.Join(",", deptnames) : "无";

                        nodedesignatedata.status = "无";
                        if (i == 0)
                        {
                            nodedesignatedata.prevnode = "无";
                        }
                        else
                        {
                            nodedesignatedata.prevnode = nodeDt.Rows[i - 1]["flowname"].ToString();
                        }

                        nodelist.Add(nodedesignatedata);
                        sinfo.NodeDesignateData = nodelist;
                        nodes.setInfo           = sinfo;
                    }
                    nlist.Add(nodes);
                }

                //流程结束节点
                nodes nodes_end = new nodes();
                nodes_end.alt     = true;
                nodes_end.isclick = false;
                nodes_end.css     = "";
                nodes_end.id      = Guid.NewGuid().ToString();
                nodes_end.img     = "";
                nodes_end.name    = "流程结束";
                nodes_end.type    = "endround";
                nodes_end.width   = 150;
                nodes_end.height  = 60;
                //取最后一流程的位置,相对排位
                nodes_end.left = nlist[nlist.Count - 1].left;
                nodes_end.top  = nlist[nlist.Count - 1].top + 100;
                setInfo endsinfo = new setInfo();
                if (entity.ISOVER == "1")
                {
                    endsinfo.Taged = 1;

                    List <NodeDesignateData> nodelist          = new List <NodeDesignateData>();
                    NodeDesignateData        nodedesignatedata = new NodeDesignateData();

                    if (nodeDt.Rows.Count > 0)
                    {
                        DataRow[] end_rows = nodeDt.Select("auditdept is not null").OrderBy(t => t.Field <DateTime>("audittime")).ToArray();
                        DateTime  auditdate;
                        DateTime.TryParse(end_rows[end_rows.Count() - 1]["audittime"].ToString(), out auditdate);
                        nodedesignatedata.createdate = auditdate.ToString("yyyy-MM-dd HH:mm");
                        nodedesignatedata.creatdept  = end_rows[end_rows.Count() - 1]["auditdept"].ToString();
                        nodedesignatedata.createuser = end_rows[end_rows.Count() - 1]["auditpeople"].ToString();
                        nodedesignatedata.status     = end_rows[end_rows.Count() - 1]["auditresult"].ToString() == "0" ? "同意" : "不同意";
                        nodedesignatedata.prevnode   = end_rows[end_rows.Count() - 1]["flowname"].ToString();;
                    }
                    else
                    {
                        nodedesignatedata.createdate = "";
                        nodedesignatedata.creatdept  = "";
                        nodedesignatedata.createuser = "";
                        nodedesignatedata.status     = "";
                        nodedesignatedata.prevnode   = "";
                    }
                    nodelist.Add(nodedesignatedata);
                    endsinfo.NodeDesignateData = nodelist;
                    nodes_end.setInfo          = endsinfo;
                }
                nlist.Add(nodes_end);

                #endregion

                #region 创建line对象

                for (int i = 0; i < nodeDt.Rows.Count; i++)
                {
                    lines lines = new lines();
                    lines.alt  = true;
                    lines.id   = Guid.NewGuid().ToString();
                    lines.from = nodeDt.Rows[i]["id"].ToString();
                    if (llist.Where(t => t.from == nodeDt.Rows[i]["id"].ToString()).Count() > 0)
                    {
                        llist.Remove(llist.Where(t => t.from == nodeDt.Rows[i]["id"].ToString()).FirstOrDefault());
                    }
                    if (i < nodeDt.Rows.Count - 1)
                    {
                        lines.to = nodeDt.Rows[i + 1]["id"].ToString();
                    }
                    lines.name = "";
                    lines.type = "sl";
                    llist.Add(lines);
                }

                lines lines_end = new lines();
                lines_end.alt  = true;
                lines_end.id   = Guid.NewGuid().ToString();
                lines_end.from = nodeDt.Rows[nodeDt.Rows.Count - 1]["id"].ToString();
                lines_end.to   = nodes_end.id;
                llist.Add(lines_end);
                #endregion

                flow.nodes = nlist;
                flow.lines = llist;
            }
            return(flow);
        }
Пример #3
0
        /// <summary>
        /// 获取安全惩罚流程图对象
        /// </summary>
        /// <param name="keyValue"></param>
        /// <returns></returns>
        public Flow GetFlow(string keyValue)
        {
            List <nodes>     nlist      = new List <nodes>();
            List <lines>     llist      = new List <lines>();
            SafepunishEntity safereward = GetEntity(keyValue);

            string flowname = "惩罚流程";

            if (safereward.AmerceType == "1" || safereward.AmerceType == "2")
            {
                flowname = "事故事件考核流程";
            }
            else if (safereward.AmerceType == "3" || safereward.AmerceType == "4")
            {
                flowname = "惩罚流程";
            }
            Operator user     = ERCHTMS.Code.OperatorProvider.Provider.Current();
            string   node_sql = string.Format(@"select a.itemvalue id,a.itemname flowname, b.approverpeopleids,b.AUDITDEPT auditdeptname,b.AUDITPEOPLE auditusername,b.AUDITTIME auditdate,b.AUDITRESULT auditstate,b.AUDITOPINION auditremark
            from ( select itemvalue,itemname from base_dataitemdetail  where itemid =  (select itemid from base_dataitem where itemname = '{1}')) a
            left join (  select t.* , c.approverpeopleids  from  epg_aptitudeinvestigateaudit t left join bis_safepunish c on  t.APTITUDEID = c.id
            where   t.disable ='1' and  t.audittime in (select  max(audittime) audittime  from epg_aptitudeinvestigateaudit  where APTITUDEID = '{0}'    group by  APTITUDEID,remark )  )   b  on   a.itemvalue =b.REMARK order by id", keyValue, flowname);

            DataTable nodeDt = this.BaseRepository().FindTable(node_sql);

            UserInfoEntity createuser    = new UserInfoService().GetUserInfoEntity(safereward.CreateUserId);
            Operator       curUser       = ERCHTMS.Code.OperatorProvider.Provider.Current();
            DataItemModel  ehsDepart     = new DataItemDetailService().GetDataItemListByItemCode("'EHSDepartment'").Where(p => p.ItemName == curUser.OrganizeId).ToList().FirstOrDefault();
            string         ehsDepartCode = "";

            if (ehsDepart != null)
            {
                ehsDepartCode = ehsDepart.ItemValue;
            }


            if (safereward.AmerceType == "1" || safereward.AmerceType == "2") //事故事件跟其他类型
            {
                if (createuser.RoleName.Contains("厂级部门用户") && createuser.RoleName.Contains("负责人"))
                {
                    nodeDt.Rows.RemoveAt(1);
                }
                else if (GetLeaderId().Contains(safereward.CreateUserId))
                {
                    nodeDt.Rows.RemoveAt(2);
                    nodeDt.Rows.RemoveAt(1);
                }
            }
            if (safereward.AmerceType == "3" || safereward.AmerceType == "4")  //日常考核跟隐患排查治理
            {
                if (((createuser.Nature == "专业" || createuser.Nature == "班组") && createuser.RoleName.Contains("负责人")) || (createuser.Nature == "部门" && !createuser.RoleName.Contains("负责人")))
                {
                    nodeDt.Rows.RemoveAt(1);
                }
                else if (createuser.Nature == "部门" && createuser.RoleName.Contains("负责人"))
                {
                    nodeDt.Rows.RemoveAt(2);
                    nodeDt.Rows.RemoveAt(1);
                }
            }

            Flow flow = new Flow();

            flow.title    = "";
            flow.initNum  = 22;
            flow.activeID = safereward.ApplyState;
            if (nodeDt != null && nodeDt.Rows.Count > 0)
            {
                #region 创建node对象
                int Taged = 0;
                for (int i = 0; i < nodeDt.Rows.Count; i++)
                {
                    DataRow dr    = nodeDt.Rows[i];
                    nodes   nodes = new nodes();
                    nodes.alt     = true;
                    nodes.isclick = false;
                    nodes.css     = "";
                    nodes.id      = dr["id"].ToString(); //主键
                    nodes.img     = "";
                    nodes.name    = dr["flowname"].ToString();
                    nodes.type    = "stepnode";
                    nodes.width   = 150;
                    nodes.height  = 60;
                    //位置
                    int m = i % 4;
                    int n = i / 4;
                    if (m == 0)
                    {
                        nodes.left = 120;
                    }
                    else
                    {
                        nodes.left = 120 + ((150 + 60) * m);
                    }
                    if (n == 0)
                    {
                        nodes.top = 54;
                    }
                    else
                    {
                        nodes.top = (n * 100) + 54;
                    }


                    setInfo sinfo = new setInfo();
                    sinfo.NodeName = nodes.name;
                    //审核记录
                    if (dr["auditdeptname"] != null && !string.IsNullOrEmpty(dr["auditdeptname"].ToString()))
                    {
                        Taged = 1;
                        List <NodeDesignateData> nodelist          = new List <NodeDesignateData>();
                        NodeDesignateData        nodedesignatedata = new NodeDesignateData();
                        DateTime auditdate;
                        DateTime.TryParse(dr["auditdate"].ToString(), out auditdate);
                        nodedesignatedata.createdate = auditdate.ToString("yyyy-MM-dd HH:mm");
                        nodedesignatedata.creatdept  = dr["auditdeptname"].ToString();
                        nodedesignatedata.createuser = dr["auditusername"].ToString();
                        nodedesignatedata.status     = dr["auditstate"].ToString() == "0" ? "已处理" : "未处理";
                        if (i == 0)
                        {
                            nodedesignatedata.prevnode = "无";
                        }
                        else
                        {
                            nodedesignatedata.prevnode = nodeDt.Rows[i - 1]["flowname"].ToString();
                        }

                        nodelist.Add(nodedesignatedata);
                        sinfo.Taged             = Taged;
                        sinfo.NodeDesignateData = nodelist;
                        nodes.setInfo           = sinfo;

                        if (dr["auditstate"].ToString() == "1")
                        {
                            Taged = 0;
                        }
                    }
                    else if (Taged == 1)
                    {
                        if (i == (nodeDt.Rows.Count - 1))
                        {
                            Taged = 1;
                            //List<NodeDesignateData> nodelist = new List<NodeDesignateData>();
                            //NodeDesignateData nodedesignatedata = new NodeDesignateData();
                            //nodelist.Add(nodedesignatedata);
                            sinfo.Taged = Taged;
                            //sinfo.NodeDesignateData = nodelist;
                            nodes.setInfo = sinfo;
                        }
                        else
                        {
                            Taged = 0;
                            List <NodeDesignateData> nodelist          = new List <NodeDesignateData>();
                            NodeDesignateData        nodedesignatedata = new NodeDesignateData();
                            nodedesignatedata.createdate = "待定";
                            var      userid = nodeDt.Rows[i - 1]["approverpeopleids"].ToString();
                            string[] ids = userid.Split(',');
                            string   DeptName = "", RealName = "";
                            if (ids.Length > 0)
                            {
                                for (int j = 0; j < ids.Length; j++)
                                {
                                    if (!string.IsNullOrEmpty(ids[j]))
                                    {
                                        UserInfoEntity uInfor = new UserInfoService().GetUserInfoEntity(ids[j]);
                                        DeptName += uInfor.DeptName + ",";
                                        RealName += uInfor.RealName + ",";
                                    }
                                }
                                nodedesignatedata.creatdept  = DeptName.Length > 0 ? DeptName.Substring(0, DeptName.Length - 1) : "";
                                nodedesignatedata.createuser = RealName.Length > 0 ? RealName.Substring(0, RealName.Length - 1) : "";
                            }
                            else
                            {
                                nodedesignatedata.creatdept  = "无";
                                nodedesignatedata.createuser = "******";
                            }
                            nodedesignatedata.status = "正在处理...";
                            if (i == 0)
                            {
                                nodedesignatedata.prevnode = "无";
                            }
                            else
                            {
                                nodedesignatedata.prevnode = nodeDt.Rows[i - 1]["flowname"].ToString();
                            }

                            nodelist.Add(nodedesignatedata);
                            sinfo.Taged             = Taged;
                            sinfo.NodeDesignateData = nodelist;
                            nodes.setInfo           = sinfo;
                        }
                    }
                    else if (safereward.ApplyState == "0" && i == 0)
                    {
                        List <NodeDesignateData> nodelist          = new List <NodeDesignateData>();
                        NodeDesignateData        nodedesignatedata = new NodeDesignateData();
                        nodedesignatedata.createdate = "待定";
                        UserInfoEntity uInfor = new UserInfoService().GetUserInfoEntity(safereward.ApproverPeopleIds);
                        if (uInfor != null)
                        {
                            nodedesignatedata.creatdept  = uInfor.DeptName;
                            nodedesignatedata.createuser = uInfor.RealName;
                        }
                        else
                        {
                            nodedesignatedata.creatdept  = safereward.ApplyUserDeptName;
                            nodedesignatedata.createuser = safereward.ApplyUserName;
                        }

                        nodedesignatedata.status = "正在处理...";
                        if (i == 0)
                        {
                            nodedesignatedata.prevnode = "无";
                        }
                        else
                        {
                            nodedesignatedata.prevnode = nodeDt.Rows[i - 1]["flowname"].ToString();
                        }

                        nodelist.Add(nodedesignatedata);
                        sinfo.Taged             = Taged;
                        sinfo.NodeDesignateData = nodelist;
                        nodes.setInfo           = sinfo;
                    }
                    nlist.Add(nodes);
                }



                #endregion

                #region 创建line对象

                for (int i = 0; i < nodeDt.Rows.Count; i++)
                {
                    lines lines = new lines();
                    lines.alt  = true;
                    lines.id   = Guid.NewGuid().ToString();
                    lines.from = nodeDt.Rows[i]["id"].ToString();
                    if (i < nodeDt.Rows.Count - 1)
                    {
                        lines.to = nodeDt.Rows[i + 1]["id"].ToString();
                    }
                    lines.name = "";
                    lines.type = "sl";
                    llist.Add(lines);
                }

                #endregion

                flow.nodes = nlist;
                flow.lines = llist;
            }
            return(flow);
        }
Пример #4
0
        /// <summary>
        /// 流程图
        /// </summary>
        /// <param name="keyValue"></param>
        /// <returns></returns>
        public Flow GetFlow(string keyValue)
        {
            List <nodes>       nlist  = new List <nodes>();
            List <lines>       llist  = new List <lines>();
            DataTable          nodeDt = GetCheckInfo(keyValue, "外包人员离厂");
            LeaveApproveEntity entity = GetEntity(keyValue);
            Flow flow = new Flow();

            flow.title    = "";
            flow.initNum  = 22;
            flow.activeID = entity.FlowId;
            Operator curUser = ERCHTMS.Code.OperatorProvider.Provider.Current();

            if (nodeDt != null && nodeDt.Rows.Count > 0)
            {
                #region [创建node对象]
                for (int i = 0; i < nodeDt.Rows.Count; i++)
                {
                    DataRow dr    = nodeDt.Rows[i];
                    nodes   nodes = new nodes();
                    nodes.alt     = true;
                    nodes.isclick = false;
                    nodes.css     = "";
                    nodes.id      = dr["id"].ToString(); //主键
                    nodes.img     = "";
                    nodes.name    = dr["flowname"].ToString();
                    nodes.type    = "stepnode";
                    nodes.width   = 150;
                    nodes.height  = 60;
                    //位置
                    int m = i % 4;
                    int n = i / 4;
                    if (m == 0)
                    {
                        nodes.left = 120;
                    }
                    else
                    {
                        nodes.left = 120 + ((150 + 60) * m);
                    }
                    if (n == 0)
                    {
                        nodes.top = 54;
                    }
                    else
                    {
                        nodes.top = (n * 100) + 54;
                    }
                    setInfo sinfo = new setInfo();
                    sinfo.NodeName = nodes.name;
                    if (dr["AUDITDEPT"] != null && !string.IsNullOrEmpty(dr["AUDITDEPT"].ToString()))
                    {
                        sinfo.Taged = 1;
                        List <NodeDesignateData> nodelist          = new List <NodeDesignateData>();
                        NodeDesignateData        nodedesignatedata = new NodeDesignateData();
                        DateTime auditdate;
                        DateTime.TryParse(dr["AUDITTIME"].ToString(), out auditdate);
                        nodedesignatedata.createdate = auditdate.ToString("yyyy-MM-dd HH:mm");
                        nodedesignatedata.creatdept  = dr["AUDITDEPT"].ToString();
                        nodedesignatedata.createuser = dr["AUDITPEOPLE"].ToString();
                        nodedesignatedata.status     = dr["AUDITRESULT"].ToString() == "0" ? "同意" : "不同意";
                        if (dr["AUDITRESULT"].ToString() == "1")
                        {
                            flow.activeID = "";
                        }
                        if (i == 0)
                        {
                            nodedesignatedata.prevnode = "无";
                        }
                        else
                        {
                            nodedesignatedata.prevnode = nodeDt.Rows[i - 1]["flowname"].ToString();
                        }
                        nodelist.Add(nodedesignatedata);
                        sinfo.NodeDesignateData = nodelist;
                        nodes.setInfo           = sinfo;
                    }
                    else
                    {
                        List <NodeDesignateData> nodelist          = new List <NodeDesignateData>();
                        NodeDesignateData        nodedesignatedata = new NodeDesignateData();
                        nodedesignatedata.createdate = "无";
                        //获取执行部门
                        string account = manypowercheckservice.GetApproveUserAccount(nodeDt.Rows[i]["id"].ToString(), keyValue, "", "", entity.LeaveDeptId);

                        DataTable dtuser    = userservice.GetUserTable(account.Split(','));
                        string[]  usernames = dtuser.AsEnumerable().Select(d => d.Field <string>("realname")).ToArray();
                        string[]  deptnames = dtuser.AsEnumerable().Select(d => d.Field <string>("deptname")).ToArray().GroupBy(t => t).Select(p => p.Key).ToArray();
                        nodedesignatedata.createuser = usernames.Length > 0 ? string.Join(",", usernames) : "无";
                        nodedesignatedata.creatdept  = deptnames.Length > 0 ? string.Join(",", deptnames) : "无";
                        //nodedesignatedata.createuser = "******";
                        //nodedesignatedata.creatdept = "无";
                        nodedesignatedata.status = "无";
                        if (i == 0)
                        {
                            nodedesignatedata.prevnode = "无";
                        }
                        else
                        {
                            nodedesignatedata.prevnode = nodeDt.Rows[i - 1]["flowname"].ToString();
                        }
                        nodelist.Add(nodedesignatedata);
                        sinfo.NodeDesignateData = nodelist;
                        nodes.setInfo           = sinfo;
                    }
                    nlist.Add(nodes);
                }
                //流程结束节点
                nodes nodes_end = new nodes();
                nodes_end.alt     = true;
                nodes_end.isclick = false;
                nodes_end.css     = "";
                nodes_end.id      = Guid.NewGuid().ToString();
                nodes_end.img     = "";
                nodes_end.name    = "流程结束";
                nodes_end.type    = "endround";
                nodes_end.width   = 150;
                nodes_end.height  = 60;
                //取最后一流程的位置,相对排位
                nodes_end.left = nlist[nlist.Count - 1].left;
                nodes_end.top  = nlist[nlist.Count - 1].top + 100;
                nlist.Add(nodes_end);

                //如果状态为审核通过或不通过,流程结束进行标识
                if (entity.ApproveState != 0)
                {
                    setInfo sinfo = new setInfo();
                    sinfo.NodeName = nodes_end.name;
                    sinfo.Taged    = 1;
                    List <NodeDesignateData> nodelist          = new List <NodeDesignateData>();
                    NodeDesignateData        nodedesignatedata = new NodeDesignateData();

                    //取流程结束时的节点信息
                    DataRow[] end_rows = nodeDt.Select("AUDITPEOPLE is not null").OrderBy(t => t.Field <DateTime>("AUDITTIME")).ToArray();
                    DataRow   end_row  = end_rows[end_rows.Count() - 1];
                    DateTime  auditdate;
                    DateTime.TryParse(end_row["AUDITTIME"].ToString(), out auditdate);
                    nodedesignatedata.createdate = auditdate.ToString("yyyy-MM-dd HH:mm");
                    nodedesignatedata.creatdept  = end_row["AUDITDEPT"].ToString();
                    nodedesignatedata.createuser = end_row["AUDITPEOPLE"].ToString();
                    nodedesignatedata.status     = end_row["AUDITRESULT"].ToString() == "0" ? "同意" : "不同意";
                    nodedesignatedata.prevnode   = end_row["flowname"].ToString();

                    nodelist.Add(nodedesignatedata);
                    sinfo.NodeDesignateData = nodelist;
                    nodes_end.setInfo       = sinfo;
                }
                #endregion

                #region 创建line对象

                for (int i = 0; i < nodeDt.Rows.Count; i++)
                {
                    lines lines = new lines();
                    lines.alt  = true;
                    lines.id   = Guid.NewGuid().ToString();
                    lines.from = nodeDt.Rows[i]["id"].ToString();
                    if (i < nodeDt.Rows.Count - 1)
                    {
                        lines.to = nodeDt.Rows[i + 1]["id"].ToString();
                    }
                    lines.name = "";
                    lines.type = "sl";
                    llist.Add(lines);
                }

                lines lines_end = new lines();
                lines_end.alt  = true;
                lines_end.id   = Guid.NewGuid().ToString();
                lines_end.from = nodeDt.Rows[nodeDt.Rows.Count - 1]["id"].ToString();
                lines_end.to   = nodes_end.id;
                llist.Add(lines_end);
                #endregion

                flow.nodes = nlist;
                flow.lines = llist;
            }
            return(flow);
        }
Пример #5
0
        /// <summary>
        /// 获取评价流程图
        /// </summary>
        /// <param name="keyValue"></param>
        /// <returns></returns>
        public Flow GetEvaluateFlow(string keyValue)
        {
            List <nodes> nlist     = new List <nodes>();
            List <lines> llist     = new List <lines>();
            var          isendflow = false;//流程结束标记
            string       flowid    = string.Empty;
            Flow         flow      = new Flow();

            flow.title   = "";
            flow.initNum = 22;
            Operator currUser       = ERCHTMS.Code.OperatorProvider.Provider.Current();
            var      EvaluateEntity = this.BaseRepository().FindEntity(keyValue);

            flowid = EvaluateEntity.NodeId;
            if (EvaluateEntity.IsOverEvaluate == 1)
            {
                isendflow = true;
            }
            string moduleName = string.Empty;

            if (EvaluateEntity != null)
            {
                switch (EvaluateEntity.DrillLevel)
                {
                case "厂级":
                    moduleName = "厂级演练记录评价";
                    break;

                case "部门级":
                    moduleName = "部门级演练记录评价";
                    break;

                case "班组级":
                    moduleName = "班组级演练记录评价";
                    break;

                default:
                    break;
                }
            }
            string    flowSql = string.Format(@"select t.flowname,t.id,t.serialnum,t.checkrolename,
                                            t.checkroleid,t.checkdeptid,t.checkdeptcode,
                                            d.evaluateperson,d.evaluatetime,d.evaluatedept,
                                            d.evaluateopinion,t.checkdeptname
                                        from  bis_manypowercheck t 
                                             left join mae_drillrecordevaluate d on d.nodeid=t.id and d.drillrecordid='{2}'
                                        where t.createuserorgcode='{0}' and t.modulename='{1}' 
                                              order by t.serialnum asc", currUser.OrganizeCode, moduleName, keyValue);
            DataTable dt      = this.BaseRepository().FindTable(flowSql);

            if (dt.Rows.Count > 0)
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    DataRow dr    = dt.Rows[i];
                    nodes   nodes = new nodes();
                    nodes.alt     = true;
                    nodes.isclick = false;
                    nodes.css     = "";
                    nodes.id      = dr["id"].ToString(); //主键
                    nodes.img     = "";
                    nodes.name    = dr["flowname"].ToString();
                    nodes.type    = "stepnode";
                    //位置
                    int m = i % 4;
                    int n = i / 4;
                    if (m == 0)
                    {
                        nodes.left = 120;
                    }
                    else
                    {
                        nodes.left = 120 + ((150 + 60) * m);
                    }
                    if (n == 0)
                    {
                        nodes.top = 54;
                    }
                    else
                    {
                        nodes.top = (n * 100) + 54;
                    }
                    setInfo sinfo = new setInfo();
                    sinfo.NodeName = nodes.name;

                    //审核记录
                    if (dr["evaluateperson"] != null && !string.IsNullOrEmpty(dr["evaluateperson"].ToString()))
                    {
                        sinfo.Taged = 1;
                        List <NodeDesignateData> nodelist          = new List <NodeDesignateData>();
                        NodeDesignateData        nodedesignatedata = new NodeDesignateData();
                        DateTime auditdate;
                        DateTime.TryParse(dr["evaluatetime"].ToString(), out auditdate);
                        nodedesignatedata.createdate = auditdate.ToString("yyyy-MM-dd HH:mm");
                        nodedesignatedata.creatdept  = dr["evaluatedept"].ToString();
                        nodedesignatedata.createuser = dr["evaluateperson"].ToString();
                        nodedesignatedata.status     = dr["evaluateopinion"].ToString();
                        if (i == 0)
                        {
                            nodedesignatedata.prevnode = "无";
                        }
                        else
                        {
                            nodedesignatedata.prevnode = dt.Rows[i - 1]["flowname"].ToString();
                        }

                        nodelist.Add(nodedesignatedata);
                        sinfo.NodeDesignateData = nodelist;
                        nodes.setInfo           = sinfo;
                    }
                    else
                    {
                        if (dr["id"].ToString() == flowid)
                        {
                            sinfo.Taged = 0;
                        }
                        List <NodeDesignateData> nodelist          = new List <NodeDesignateData>();
                        NodeDesignateData        nodedesignatedata = new NodeDesignateData();
                        nodedesignatedata.createdate = "无";
                        var checkDeptId = dr["checkdeptid"].ToString();
                        if (checkDeptId == "-1")//审核流程标记 -1 为执行单位=外包工程的发包单位
                        {
                            var deptentity = new DepartmentService().GetEntityByCode(EvaluateEntity.CREATEUSERDEPTCODE);
                            if (deptentity != null)
                            {
                                if (deptentity.Nature == "班组")
                                {
                                    var parentDept = new DepartmentService().GetParentDeptBySpecialArgs(deptentity.ParentId, "部门");
                                    if (parentDept != null)
                                    {
                                        checkDeptId = parentDept.DepartmentId;
                                        nodedesignatedata.creatdept = parentDept.FullName;
                                    }
                                }
                            }
                            else
                            {
                                nodedesignatedata.creatdept = "无";
                            }
                        }
                        else if (checkDeptId == "-3")
                        {
                            var deptentity = new DepartmentService().GetEntityByCode(EvaluateEntity.CREATEUSERDEPTCODE);
                            if (deptentity != null)
                            {
                                checkDeptId = deptentity.DepartmentId;
                                nodedesignatedata.creatdept = deptentity.FullName;
                            }
                            else
                            {
                                nodedesignatedata.creatdept = "无";
                            }
                        }
                        else
                        {
                            nodedesignatedata.creatdept = dr["checkdeptname"].ToString();
                        }
                        string userNames = new ScaffoldService().GetUserName(checkDeptId, dr["checkrolename"].ToString(), "0").Split('|')[0];
                        nodedesignatedata.createuser = !string.IsNullOrEmpty(userNames) ? userNames : "无";

                        nodedesignatedata.status = "无";
                        if (i == 0)
                        {
                            nodedesignatedata.prevnode = "无";
                        }
                        else
                        {
                            nodedesignatedata.prevnode = dt.Rows[i - 1]["flowname"].ToString();
                        }

                        nodelist.Add(nodedesignatedata);
                        sinfo.NodeDesignateData = nodelist;
                        nodes.setInfo           = sinfo;
                    }
                    nlist.Add(nodes);
                }
                //流程结束节点
                nodes nodes_end = new nodes();
                nodes_end.alt     = true;
                nodes_end.isclick = false;
                nodes_end.css     = "";
                nodes_end.id      = Guid.NewGuid().ToString();
                nodes_end.img     = "";
                nodes_end.name    = "流程结束";
                nodes_end.type    = "endround";
                nodes_end.width   = 150;
                nodes_end.height  = 60;
                //取最后一流程的位置,相对排位
                nodes_end.left = nlist[nlist.Count - 1].left;
                nodes_end.top  = nlist[nlist.Count - 1].top + 100;
                nlist.Add(nodes_end);

                //如果状态为审核通过或不通过,流程结束进行标识
                if (isendflow)
                {
                    setInfo sinfo = new setInfo();
                    sinfo.NodeName = nodes_end.name;
                    sinfo.Taged    = 1;
                    List <NodeDesignateData> nodelist          = new List <NodeDesignateData>();
                    NodeDesignateData        nodedesignatedata = new NodeDesignateData();

                    //取流程结束时的节点信息
                    if (!string.IsNullOrWhiteSpace(flowid))
                    {
                        DataRow[] end_rows = dt.Select("id = '" + flowid + "'");
                        DataRow   end_row  = end_rows[0];
                        DateTime  auditdate;
                        DateTime.TryParse(end_row["evaluatetime"].ToString(), out auditdate);
                        nodedesignatedata.createdate = auditdate.ToString("yyyy-MM-dd HH:mm");
                        nodedesignatedata.creatdept  = end_row["evaluatedept"].ToString();
                        nodedesignatedata.createuser = end_row["evaluateperson"].ToString();
                        nodedesignatedata.status     = end_row["evaluateopinion"].ToString();
                        nodedesignatedata.prevnode   = end_row["flowname"].ToString();
                    }
                    else
                    {
                        //历史数据无Flowid
                        nodedesignatedata.createdate = "";
                        nodedesignatedata.creatdept  = "";
                        nodedesignatedata.createuser = "";
                        nodedesignatedata.status     = "";
                        nodedesignatedata.prevnode   = "";
                    }
                    nodelist.Add(nodedesignatedata);
                    sinfo.NodeDesignateData = nodelist;
                    nodes_end.setInfo       = sinfo;
                }

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    lines lines = new lines();
                    lines.alt  = true;
                    lines.id   = Guid.NewGuid().ToString();
                    lines.from = dt.Rows[i]["id"].ToString();
                    if (i < dt.Rows.Count - 1)
                    {
                        lines.to = dt.Rows[i + 1]["id"].ToString();
                    }
                    lines.name = "";
                    lines.type = "sl";
                    llist.Add(lines);
                }

                lines lines_end = new lines();
                lines_end.alt  = true;
                lines_end.id   = Guid.NewGuid().ToString();
                lines_end.from = dt.Rows[dt.Rows.Count - 1]["id"].ToString();
                lines_end.to   = nodes_end.id;
                llist.Add(lines_end);

                flow.nodes = nlist;
                flow.lines = llist;
            }
            return(flow);
        }
Пример #6
0
        /// <summary>
        /// 查询审核流程图
        /// </summary>
        /// <param name="keyValue">主键</param>
        /// <param name="urltype">查询类型:0:安全考核</param>
        /// <returns></returns>
        public Flow GetAuditFlowData(string keyValue, string urltype)
        {
            List <nodes> nlist    = new List <nodes>();
            List <lines> llist    = new List <lines>();
            Operator     user     = ERCHTMS.Code.OperatorProvider.Provider.Current();
            string       moduleno = string.Empty;
            string       table    = string.Empty;

            moduleno = "AQKHSH";
            DataTable dt = new DataTable();

            table = string.Format(@"left join epg_aptitudeinvestigateaudit b on t.id = b.flowid and b.aptitudeid = '{0}' ", keyValue);
            string flowSql = string.Format(@"select d.FLOWDEPT,flowdept flowdeptid, g.FULLNAME, d.FLOWDEPTNAME,d.FLOWROLENAME,d.issaved,d.isover, t.flowname,t.id,t.serialnum,t.checkrolename,t.checkroleid,t.checkdeptid,t.checkdeptcode,
                                            b.auditresult,b.auditdept,b.auditpeople,b.audittime,t.checkdeptname,t.applytype,t.scriptcurcontent,t.choosedeptrange
                                             from  bis_manypowercheck t {2}   left join epg_safetyassessment d on d.flowid =  t.id and d.id = '{3}'
                                             left join base_department g on d.FLOWDEPT = g.DEPARTMENTID
                                             where t.createuserorgcode='{1}' and t.moduleno='{0}' order by t.serialnum asc", moduleno, user.OrganizeCode, table, keyValue);

            dt = this.BaseRepository().FindTable(flowSql);
            //DataTable nodeDt = GetCheckInfo(KeyValue);
            //JobSafetyCardApplyEntity entity = GetEntity(KeyValue);
            Flow flow = new Flow();

            flow.title   = "";
            flow.initNum = 22;
            int    end           = 0;
            string endcreatedate = "";
            string endcreatdept  = "";
            string endcreateuser = "";
            string endflowname   = "";

            if (dt.Rows.Count > 0)
            {
                #region

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    DataRow dr    = dt.Rows[i];
                    nodes   nodes = new nodes();
                    nodes.alt     = true;
                    nodes.isclick = false;
                    nodes.css     = "";
                    nodes.id      = dr["id"].ToString(); //主键
                    nodes.img     = "";
                    nodes.name    = dr["flowname"].ToString();
                    endflowname   = dr["flowname"].ToString();
                    nodes.type    = "stepnode";
                    //位置
                    int m = i % 4;
                    int n = i / 4;
                    if (m == 0)
                    {
                        nodes.left = 120;
                    }
                    else
                    {
                        nodes.left = 120 + ((150 + 60) * m);
                    }
                    if (n == 0)
                    {
                        nodes.top = 54;
                    }
                    else
                    {
                        nodes.top = (n * 100) + 54;
                    }
                    setInfo sinfo = new setInfo();
                    sinfo.NodeName = nodes.name;


                    //var emptyele = dangerousjoboperateservice.GetList("").Where(t => t.RecId == KeyValue && t.OperateType == 2).OrderByDescending(t => t.CreateDate).FirstOrDefault();
                    if (dr["auditresult"].ToString() == "0" || dr["isover"].ToString() == "1")
                    {
                        sinfo.Taged = 1;
                        List <NodeDesignateData> nodelist          = new List <NodeDesignateData>();
                        NodeDesignateData        nodedesignatedata = new NodeDesignateData();
                        nodedesignatedata.createdate = Convert.ToDateTime(dr["audittime"].ToString()).ToString("yyyy-MM-dd HH:mm");
                        endcreatedate = Convert.ToDateTime(dr["audittime"].ToString()).ToString("yyyy-MM-dd HH:mm");
                        nodedesignatedata.creatdept = dr["auditdept"].ToString();
                        endcreatdept = dr["auditdept"].ToString();
                        nodedesignatedata.createuser = dr["auditpeople"].ToString();
                        endcreateuser            = dr["auditpeople"].ToString();
                        nodedesignatedata.status = "同意";
                        if (nlist.Count == 0)
                        {
                            nodedesignatedata.prevnode = "无";
                        }
                        else
                        {
                            nodedesignatedata.prevnode = nlist[nlist.Count - 1].name;
                        }
                        nodelist.Add(nodedesignatedata);
                        sinfo.NodeDesignateData = nodelist;
                        nodes.setInfo           = sinfo;
                        end = 1;
                    }
                    else if (dr["issaved"].ToString() == "1")
                    {
                        sinfo.Taged = 0;
                        List <NodeDesignateData> nodelist          = new List <NodeDesignateData>();
                        NodeDesignateData        nodedesignatedata = new NodeDesignateData();
                        nodedesignatedata.createdate = "无";
                        //DataTable dtuser = userservice.GetUserTable(entity.PowerCutPersonId.Split(','));
                        //string[] usernames = dtuser.AsEnumerable().Select(d => d.Field<string>("realname")).ToArray();
                        //string[] deptnames = dtuser.AsEnumerable().Select(d => d.Field<string>("deptname")).ToArray().GroupBy(t => t).Select(p => p.Key).ToArray();
                        //nodedesignatedata.createuser = usernames.Length > 0 ? string.Join(",", usernames) : "无";
                        //nodedesignatedata.creatdept = deptnames.Length > 0 ? string.Join(",", deptnames) : "无";
                        nodedesignatedata.createdate = "无";
                        nodedesignatedata.creatdept  = dr["fullname"].ToString();
                        nodedesignatedata.createuser = this.BaseRepository().FindObject(" select wm_concat(realname)  from base_user where departmentid = '" + dr["flowdeptid"].ToString() + "' and rolename like '%负责人%' ").ToString();
                        nodedesignatedata.status     = dr["flowname"].ToString();;
                        if (nlist.Count == 0)
                        {
                            nodedesignatedata.prevnode = "无";
                        }
                        else
                        {
                            nodedesignatedata.prevnode = nlist[nlist.Count - 1].name;
                        }
                        nodelist.Add(nodedesignatedata);
                        sinfo.NodeDesignateData = nodelist;
                        nodes.setInfo           = sinfo;
                    }
                    nlist.Add(nodes);
                }

                #endregion



                #region 创建node对象

                //流程结束节点
                nodes nodes_end = new nodes();
                nodes_end.alt     = true;
                nodes_end.isclick = false;
                nodes_end.css     = "";
                nodes_end.id      = Guid.NewGuid().ToString();
                nodes_end.img     = "";
                nodes_end.name    = "流程结束";
                nodes_end.type    = "endround";
                nodes_end.width   = 150;
                nodes_end.height  = 60;
                //取最后一流程的位置,相对排位
                nodes_end.left = nlist[nlist.Count - 1].left;
                nodes_end.top  = nlist[nlist.Count - 1].top + 100;
                nlist.Add(nodes_end);

                if (end == 1)
                {
                    setInfo sinfo = new setInfo();
                    sinfo.NodeName = nodes_end.name;
                    sinfo.Taged    = 1;
                    List <NodeDesignateData> nodelist          = new List <NodeDesignateData>();
                    NodeDesignateData        nodedesignatedata = new NodeDesignateData();

                    //取流程结束时的节点信息
                    nodedesignatedata.createdate = endcreatedate;
                    nodedesignatedata.creatdept  = endcreatdept;
                    nodedesignatedata.createuser = endcreateuser;
                    nodedesignatedata.status     = "同意";
                    nodedesignatedata.prevnode   = endflowname;

                    nodelist.Add(nodedesignatedata);
                    sinfo.NodeDesignateData = nodelist;
                    nodes_end.setInfo       = sinfo;
                }

                #endregion

                #region 创建line对象

                for (int i = 0; i < nlist.Count; i++)
                {
                    lines lines = new lines();
                    lines.alt  = true;
                    lines.id   = Guid.NewGuid().ToString();
                    lines.from = nlist[i].id;
                    if (i < nlist.Count - 1)
                    {
                        lines.to = nlist[i + 1].id;
                    }
                    lines.name = "";
                    lines.type = "sl";
                    llist.Add(lines);
                }

                lines lines_end = new lines();
                lines_end.alt  = true;
                lines_end.id   = Guid.NewGuid().ToString();
                lines_end.from = nlist[nlist.Count - 1].id;
                lines_end.to   = nodes_end.id;
                llist.Add(lines_end);
                #endregion

                flow.nodes = nlist;
                flow.lines = llist;
            }
            return(flow);
        }
Пример #7
0
        /// <summary>
        /// 获取流程图
        /// </summary>
        /// <param name="keyValue"></param>
        /// <param name="modulename"></param>
        /// <returns></returns>
        public Flow GetFlow(string modulename, string keyValue, string adjustId)
        {
            List <nodes> nlist = new List <nodes>();
            List <lines> llist = new List <lines>();
            Operator     user  = ERCHTMS.Code.OperatorProvider.Provider.Current();
            //得到流程节点
            SafeAdjustmentEntity adjustmentEntity = adjustmentService.GetEntity(keyValue);

            if (string.IsNullOrEmpty(adjustId))
            {
                //取最新一条
                adjustmentEntity = adjustmentService.GetEntity(keyValue);
                adjustId         = adjustmentEntity.ID;
            }
            DataTable         nodeDt = service.GetCheckInfo(modulename, keyValue, adjustId);
            SafeMeasureEntity entity = service.GetEntity(keyValue);
            Flow flow = new Flow();

            flow.title    = "";
            flow.initNum  = 22;
            flow.activeID = entity.FlowId;

            if (nodeDt != null && nodeDt.Rows.Count > 0)
            {
                #region [创建node对象]
                for (int i = 0; i < nodeDt.Rows.Count; i++)
                {
                    DataRow dr    = nodeDt.Rows[i];
                    nodes   nodes = new nodes();
                    nodes.alt     = true;
                    nodes.isclick = false;
                    nodes.css     = "";
                    nodes.id      = dr["id"].ToString(); //主键
                    nodes.img     = "";
                    nodes.name    = dr["flowname"].ToString();
                    nodes.type    = "stepnode";
                    nodes.width   = 150;
                    nodes.height  = 60;
                    //位置
                    int m = i % 4;
                    int n = i / 4;
                    if (m == 0)
                    {
                        nodes.left = 120;
                    }
                    else
                    {
                        nodes.left = 120 + ((150 + 60) * m);
                    }
                    if (n == 0)
                    {
                        nodes.top = 54;
                    }
                    else
                    {
                        nodes.top = (n * 100) + 54;
                    }


                    setInfo sinfo = new setInfo();
                    sinfo.NodeName = nodes.name;
                    if (dr["AUDITDEPT"] != null && !string.IsNullOrEmpty(dr["AUDITDEPT"].ToString()))
                    {
                        sinfo.Taged = 1;
                        List <NodeDesignateData> nodelist          = new List <NodeDesignateData>();
                        NodeDesignateData        nodedesignatedata = new NodeDesignateData();
                        DateTime auditdate;
                        DateTime.TryParse(dr["AUDITTIME"].ToString(), out auditdate);
                        nodedesignatedata.createdate = auditdate.ToString("yyyy-MM-dd HH:mm");
                        nodedesignatedata.creatdept  = dr["AUDITDEPT"].ToString();
                        nodedesignatedata.createuser = dr["AUDITPEOPLE"].ToString();
                        nodedesignatedata.status     = dr["AUDITRESULT"].ToString() == "0" ? "同意" : "不同意";
                        if (dr["AUDITRESULT"].ToString() == "1")
                        {
                            flow.activeID = "";
                        }
                        if (i == 0)
                        {
                            nodedesignatedata.prevnode = "无";
                        }
                        else
                        {
                            nodedesignatedata.prevnode = nodeDt.Rows[i - 1]["flowname"].ToString();
                        }
                        nodelist.Add(nodedesignatedata);
                        sinfo.NodeDesignateData = nodelist;
                        nodes.setInfo           = sinfo;
                    }
                    else
                    {
                        List <NodeDesignateData> nodelist          = new List <NodeDesignateData>();
                        NodeDesignateData        nodedesignatedata = new NodeDesignateData();
                        nodedesignatedata.createdate = "无";
                        //获取执行部门
                        string executeDeptId = string.Empty;
                        if (dr["checkdeptid"].ToString() == "-3")
                        {
                            executeDeptId = service.GetExecuteDept(entity.Id);
                        }
                        else
                        {
                            executeDeptId = dr["checkdeptid"].ToString();
                        }
                        //获取执行人
                        IManyPowerCheckService powerCheck = new ManyPowerCheckService();
                        //获取流程节点配置
                        List <ManyPowerCheckEntity> powerList = powerCheck.GetListBySerialNum(user.OrganizeCode, "安措计划调整审批");
                        if (powerList.Count > 0)
                        {
                            var item = powerList.Where(t => t.FLOWNAME == dr["FLOWNAME"].ToString()).FirstOrDefault();
                            if (item.CHECKDEPTCODE == "-3" || item.CHECKDEPTID == "-3")
                            {
                                string executedept = new DepartmentService().GetEntity(executeDeptId).DepartmentId;
                                switch (item.ChooseDeptRange) //判断部门范围
                                {
                                case "0":
                                    item.CHECKDEPTID = executedept;
                                    break;

                                case "1":
                                    var dept = deptservice.GetEntity(executedept);
                                    while (dept.Nature != "部门" && dept.Nature != "厂级")
                                    {
                                        dept = deptservice.GetEntity(dept.ParentId);
                                    }
                                    item.CHECKDEPTID = dept.DepartmentId;
                                    break;

                                case "2":
                                    var dept1 = deptservice.GetEntity(executedept);
                                    while (dept1.Nature != "部门" && dept1.Nature != "厂级")
                                    {
                                        dept1 = deptservice.GetEntity(dept1.ParentId);
                                    }
                                    item.CHECKDEPTID = (dept1.DepartmentId + "," + executedept).Trim(',');
                                    break;

                                default:
                                    item.CHECKDEPTID = executedept;
                                    break;
                                }
                                executeDeptId = item.CHECKDEPTID;
                            }
                        }
                        string    userNames = "";
                        string    execusers = GetNextStepUser(dr["checkrolename"].ToString(), executeDeptId, out userNames);
                        DataTable dtuser    = userservice.GetUserTable(execusers.Split(','));
                        string[]  usernames = dtuser.AsEnumerable().Select(d => d.Field <string>("realname")).ToArray();
                        string[]  deptnames = dtuser.AsEnumerable().Select(d => d.Field <string>("deptname")).ToArray().GroupBy(t => t).Select(p => p.Key).ToArray();
                        nodedesignatedata.createuser = usernames.Length > 0 ? string.Join(",", usernames) : "无";
                        nodedesignatedata.creatdept  = deptnames.Length > 0 ? string.Join(",", deptnames) : "无";
                        //nodedesignatedata.createuser = "******";
                        //nodedesignatedata.creatdept = "无";
                        nodedesignatedata.status = "无";
                        if (i == 0)
                        {
                            nodedesignatedata.prevnode = "无";
                        }
                        else
                        {
                            nodedesignatedata.prevnode = nodeDt.Rows[i - 1]["flowname"].ToString();
                        }
                        nodelist.Add(nodedesignatedata);
                        sinfo.NodeDesignateData = nodelist;
                        nodes.setInfo           = sinfo;
                    }

                    nlist.Add(nodes);
                }
                //流程结束节点
                nodes nodes_end = new nodes();
                nodes_end.alt     = true;
                nodes_end.isclick = false;
                nodes_end.css     = "";
                nodes_end.id      = Guid.NewGuid().ToString();
                nodes_end.img     = "";
                nodes_end.name    = "流程结束";
                nodes_end.type    = "endround";
                nodes_end.width   = 150;
                nodes_end.height  = 60;
                //取最后一流程的位置,相对排位
                nodes_end.left = nlist[nlist.Count - 1].left;
                nodes_end.top  = nlist[nlist.Count - 1].top + 100;
                nlist.Add(nodes_end);

                //如果状态为审核通过或不通过,流程结束进行标识
                if (entity.Stauts == "审批不通过" || (entity.IsOver == 1 && entity.Stauts == "审批通过"))
                {
                    setInfo sinfo = new setInfo();
                    sinfo.NodeName = nodes_end.name;
                    sinfo.Taged    = 1;
                    List <NodeDesignateData> nodelist          = new List <NodeDesignateData>();
                    NodeDesignateData        nodedesignatedata = new NodeDesignateData();

                    //取流程结束时的节点信息
                    DataRow[] end_rows = nodeDt.Select("AUDITPEOPLE is not null").OrderBy(t => t.Field <DateTime>("AUDITTIME")).ToArray();
                    DataRow   end_row  = end_rows[end_rows.Count() - 1];
                    DateTime  auditdate;
                    DateTime.TryParse(end_row["AUDITTIME"].ToString(), out auditdate);
                    nodedesignatedata.createdate = auditdate.ToString("yyyy-MM-dd HH:mm");
                    nodedesignatedata.creatdept  = end_row["AUDITDEPT"].ToString();
                    nodedesignatedata.createuser = end_row["AUDITPEOPLE"].ToString();
                    nodedesignatedata.status     = end_row["AUDITRESULT"].ToString() == "0" ? "同意" : "不同意";
                    nodedesignatedata.prevnode   = end_row["flowname"].ToString();

                    nodelist.Add(nodedesignatedata);
                    sinfo.NodeDesignateData = nodelist;
                    nodes_end.setInfo       = sinfo;
                }

                #region 创建line对象

                for (int i = 0; i < nodeDt.Rows.Count; i++)
                {
                    lines lines = new lines();
                    lines.alt  = true;
                    lines.id   = Guid.NewGuid().ToString();
                    lines.from = nodeDt.Rows[i]["id"].ToString();
                    if (i < nodeDt.Rows.Count - 1)
                    {
                        lines.to = nodeDt.Rows[i + 1]["id"].ToString();
                    }
                    lines.name = "";
                    lines.type = "sl";
                    llist.Add(lines);
                }

                lines lines_end = new lines();
                lines_end.alt  = true;
                lines_end.id   = Guid.NewGuid().ToString();
                lines_end.from = nodeDt.Rows[nodeDt.Rows.Count - 1]["id"].ToString();
                lines_end.to   = nodes_end.id;
                llist.Add(lines_end);
                #endregion

                flow.nodes = nlist;
                flow.lines = llist;
                #endregion
            }
            return(flow);
        }
Пример #8
0
        /// <summary>
        /// 流程图信息
        /// </summary>
        /// <param name="keyValue"></param>
        /// <returns></returns>
        public Flow GetFlow(string keyValue)
        {
            List <nodes> nlist  = new List <nodes>();
            List <lines> llist  = new List <lines>();
            DataTable    entity = GetEntityByT(keyValue, "");
            Flow         flow   = new Flow();

            flow.title    = "";
            flow.initNum  = 22;
            flow.activeID = entity.Rows[0]["FlowState"].ToString();
            string[]       flowname  = new string[] { "任务下发", "责任部门(单位)办理反馈", "督办人督办确认" };
            string         FlowState = entity.Rows[0]["FlowState"].ToString();
            string         userid    = entity.Rows[0]["CreateUserId"].ToString();
            UserInfoEntity uInfor    = new UserInfoService().GetUserInfoEntity(userid);

            for (int i = 0; i < 3; i++)
            {
                nodes nodes = new nodes();
                nodes.alt     = true;
                nodes.isclick = false;
                nodes.css     = "";
                nodes.id      = entity.Rows[0]["Id"].ToString() + i; //主键
                nodes.img     = "";
                nodes.name    = flowname[i];
                nodes.type    = "stepnode";
                nodes.width   = 150;
                nodes.height  = 60;
                //位置
                int m = i % 4;
                int n = i / 4;
                if (m == 0)
                {
                    nodes.left = 120;
                }
                else
                {
                    nodes.left = 120 + ((150 + 60) * m);
                }
                if (n == 0)
                {
                    nodes.top = 54;
                }
                else
                {
                    nodes.top = (n * 100) + 54;
                }
                setInfo sinfo = new setInfo();
                if (int.Parse(FlowState) > i)
                {
                    sinfo.Taged = 1;
                }
                else if (int.Parse(FlowState) == i)
                {
                    sinfo.Taged = 0;
                }
                sinfo.NodeName = nodes.name;
                List <NodeDesignateData> nodelist          = new List <NodeDesignateData>();
                NodeDesignateData        nodedesignatedata = new NodeDesignateData();
                if (i == 0)
                {
                    nodedesignatedata.createdate = entity.Rows[0]["CreateDate"].ToString();     //处理时间
                    nodedesignatedata.creatdept  = uInfor.DeptName;                             //处理单位
                    nodedesignatedata.createuser = entity.Rows[0]["CreateUserName"].ToString(); //处理人
                    nodedesignatedata.status     = "无";                                         //处理状态
                    if (i == 0)
                    {
                        nodedesignatedata.prevnode = "无";
                    }
                    else
                    {
                        nodedesignatedata.prevnode = flowname[i - 1];//上一流程
                    }
                }
                else if (i == 1)
                {
                    nodedesignatedata.createdate = string.IsNullOrEmpty(entity.Rows[0]["FCreateDate"].ToString()) ? "无" : entity.Rows[0]["FeedbackDate"].ToString(); //处理时间
                    nodedesignatedata.creatdept  = entity.Rows[0]["DutyDeptName"].ToString();                                                                        //处理单位
                    nodedesignatedata.createuser = entity.Rows[0]["DutyPerson"].ToString();                                                                          //处理人
                    nodedesignatedata.status     = "无";                                                                                                              //处理状态
                    nodedesignatedata.prevnode   = flowname[i - 1];                                                                                                  //上一流程
                }
                else if (i == 2)
                {
                    nodedesignatedata.createdate = string.IsNullOrEmpty(entity.Rows[0]["CCreateDate"].ToString()) ? "无" : entity.Rows[0]["ConfirmationDate"].ToString(); //处理时间
                    nodedesignatedata.creatdept  = entity.Rows[0]["SuperviseDeptName"].ToString();                                                                       //处理单位
                    nodedesignatedata.createuser = entity.Rows[0]["SupervisePerson"].ToString();                                                                         //处理人
                    nodedesignatedata.status     = "无";                                                                                                                  //处理状态
                    nodedesignatedata.prevnode   = flowname[i - 1];                                                                                                      //上一流程
                }


                nodelist.Add(nodedesignatedata);
                sinfo.NodeDesignateData = nodelist;
                nodes.setInfo           = sinfo;
                nlist.Add(nodes);
            }
            //流程结束节点
            nodes nodes_end = new nodes();

            nodes_end.alt     = true;
            nodes_end.isclick = false;
            nodes_end.css     = "";
            nodes_end.id      = Guid.NewGuid().ToString();
            nodes_end.img     = "";
            nodes_end.name    = "流程结束";
            nodes_end.type    = "endround";
            nodes_end.width   = 150;
            nodes_end.height  = 60;
            //取最后一流程的位置,相对排位
            nodes_end.left = nlist[nlist.Count - 1].left;
            nodes_end.top  = nlist[nlist.Count - 1].top + 100;
            if (FlowState == "3")
            {
                setInfo sinfo = new setInfo();
                sinfo.NodeName    = nodes_end.name;
                sinfo.Taged       = 1;
                nodes_end.setInfo = sinfo;
            }
            nlist.Add(nodes_end);

            #region 创建line对象

            for (int i = 0; i < 3; i++)
            {
                lines lines = new lines();
                lines.alt  = true;
                lines.id   = Guid.NewGuid().ToString();
                lines.from = entity.Rows[0]["Id"].ToString() + i;
                if (i == 2)
                {
                    lines.to = nodes_end.id;
                }
                else
                {
                    lines.to = entity.Rows[0]["Id"].ToString() + (i + 1);
                }

                lines.name = "";
                lines.type = "sl";
                llist.Add(lines);
            }

            lines lines_end = new lines();
            lines_end.alt  = true;
            lines_end.id   = Guid.NewGuid().ToString();
            lines_end.from = entity.Rows[0]["Id"].ToString() + "3";
            lines_end.to   = nodes_end.id;
            llist.Add(lines_end);
            #endregion

            flow.nodes = nlist;
            flow.lines = llist;
            return(flow);
        }