Пример #1
0
        /// <summary>
        /// 当前登录人是否有权限审核并获取下一次审核权限实体
        /// </summary>
        /// <param name="currUser">当前登录人</param>
        /// <param name="state">是否有权限审核 1:能审核 0 :不能审核</param>
        /// <param name="moduleName">模块名称</param>
        /// <param name="createdeptid">创建人部门ID</param>
        /// <returns>null-当前为最后一次审核,ManyPowerCheckEntity:下一次审核权限实体</returns>
        public ManyPowerCheckEntity CheckAuditPower(Operator currUser, out string state, string moduleName, string createdeptid, string applyId = "")
        {
            ManyPowerCheckEntity        nextCheck  = null;//下一步审核
            IManyPowerCheckService      powerCheck = new ManyPowerCheckService();
            List <ManyPowerCheckEntity> powerList  = powerCheck.GetListBySerialNum(currUser.OrganizeCode, moduleName);
            bool   hasRight = false;
            string deptId   = "-1";
            ThreePeopleCheckEntity entity = new ThreePeopleCheckEntity();

            if (!string.IsNullOrEmpty(applyId))
            {
                deptId = createdeptid;
                entity = BaseRepository().FindEntity(applyId);
                if (entity != null)
                {
                    if (!string.IsNullOrEmpty(entity.NodeId))
                    {
                        ManyPowerCheckEntity mp = powerCheck.GetEntity(entity.NodeId);
                        if (mp != null)
                        {
                            if (mp.CHECKDEPTID == "-1")
                            {
                                if (entity.ApplyType == "内部")
                                {
                                    deptId = mp.CHECKDEPTID = entity.BelongDeptId;
                                }
                                else
                                {
                                    string    sql = string.Format("select ENGINEERLETDEPTID from EPG_OUTSOURINGENGINEER t where id='{0}'", entity.ProjectId);
                                    DataTable dt  = BaseRepository().FindTable(sql);
                                    if (dt.Rows.Count > 0)
                                    {
                                        deptId = mp.CHECKDEPTID = dt.Rows[0][0].ToString();
                                    }
                                }
                                if (mp.CHECKDEPTID == currUser.DeptId)
                                {
                                    var rolelist = currUser.RoleName.Split(',');
                                    for (int j = 0; j < rolelist.Length; j++)
                                    {
                                        if (mp.CHECKROLENAME.Contains(rolelist[j]))
                                        {
                                            hasRight = true;
                                            break;
                                        }
                                    }
                                }
                            }
                            else if (mp.CHECKDEPTID == "-3")
                            {
                                deptId = entity.CreateUserDeptId;
                                if (entity.CreateUserDeptId == currUser.DeptId)
                                {
                                    var rolelist = currUser.RoleName.Split(',');
                                    for (int j = 0; j < rolelist.Length; j++)
                                    {
                                        if (mp.CHECKROLENAME.Contains(rolelist[j]))
                                        {
                                            hasRight = true;
                                            break;
                                        }
                                    }
                                }
                            }
                            else
                            {
                                deptId = mp.CHECKDEPTID;
                                if (mp.CHECKDEPTID == currUser.DeptId)
                                {
                                    var rolelist = currUser.RoleName.Split(',');
                                    for (int j = 0; j < rolelist.Length; j++)
                                    {
                                        if (mp.CHECKROLENAME.Contains(rolelist[j]))
                                        {
                                            hasRight = true;
                                            break;
                                        }
                                    }
                                }
                                else
                                {
                                    hasRight = false;
                                }
                            }
                        }
                    }
                }
            }
            if (powerList.Count > 0)
            {
                var dept = new DepartmentService().GetEntity(deptId);
                if (dept != null)
                {
                    foreach (var item in powerList)
                    {
                        if (item.CHECKDEPTID == "-3" || item.CHECKDEPTID == "-1")
                        {
                            item.CHECKDEPTID   = deptId;
                            item.CHECKDEPTCODE = dept.DeptCode;
                            item.CHECKDEPTNAME = dept.FullName;
                        }
                    }
                    List <ManyPowerCheckEntity> checkPower = new List <ManyPowerCheckEntity>();

                    //登录人是否有审核权限--有审核权限直接审核通过
                    for (int i = 0; i < powerList.Count; i++)
                    {
                        if (powerList[i].CHECKDEPTID == currUser.DeptId)
                        {
                            var rolelist = currUser.RoleName.Split(',');
                            for (int j = 0; j < rolelist.Length; j++)
                            {
                                if (powerList[i].CHECKROLENAME.Contains(rolelist[j]))
                                {
                                    checkPower.Add(powerList[i]);
                                    break;
                                }
                            }
                        }
                    }
                    powerList.GroupBy(t => t.SERIALNUM).ToList().Count();
                    if (checkPower.Count > 0)
                    {
                        if (!string.IsNullOrEmpty(applyId))
                        {
                            if (hasRight)
                            {
                                state = "1";
                            }
                            else
                            {
                                state = "0";
                            }
                        }
                        else
                        {
                            state = "1";
                        }

                        ManyPowerCheckEntity check = checkPower.Last();//当前

                        for (int i = 0; i < powerList.Count; i++)
                        {
                            if (check.ID == powerList[i].ID)
                            {
                                if ((i + 1) >= powerList.Count)
                                {
                                    nextCheck = null;
                                }
                                else
                                {
                                    nextCheck = powerList[i + 1];
                                }
                            }
                        }
                    }
                    else
                    {
                        state     = "0";
                        nextCheck = powerList.First();
                    }

                    if (null != nextCheck)
                    {
                        //当前审核序号下的对应集合
                        var serialList = powerList.Where(p => p.SERIALNUM == nextCheck.SERIALNUM);
                        //集合记录大于1,则表示存在并行审核(审查)的情况
                        if (serialList.Count() > 1)
                        {
                            string flowdept     = string.Empty; // 存取值形式 a1,a2
                            string flowdeptname = string.Empty; // 存取值形式 b1,b2
                            string flowrole     = string.Empty; // 存取值形式 c1|c2|  (c1数据构成: cc1,cc2,cc3)
                            string flowrolename = string.Empty; // 存取值形式 d1|d2| (d1数据构成: dd1,dd2,dd3)

                            ManyPowerCheckEntity slastEntity = new ManyPowerCheckEntity();
                            slastEntity = serialList.LastOrDefault();
                            foreach (ManyPowerCheckEntity model in serialList)
                            {
                                flowdept     += model.CHECKDEPTID + ",";
                                flowdeptname += model.CHECKDEPTNAME + ",";
                                flowrole     += model.CHECKROLEID + "|";
                                flowrolename += model.CHECKROLENAME + "|";
                            }
                            if (!flowdept.IsEmpty())
                            {
                                slastEntity.CHECKDEPTID = flowdept.Substring(0, flowdept.Length - 1);
                            }
                            if (!flowdeptname.IsEmpty())
                            {
                                slastEntity.CHECKDEPTNAME = flowdeptname.Substring(0, flowdeptname.Length - 1);
                            }
                            if (!flowdept.IsEmpty())
                            {
                                slastEntity.CHECKROLEID = flowrole.Substring(0, flowrole.Length - 1);
                            }
                            if (!flowdept.IsEmpty())
                            {
                                slastEntity.CHECKROLENAME = flowrolename.Substring(0, flowrolename.Length - 1);
                            }
                            nextCheck = slastEntity;
                        }
                    }
                    return(nextCheck);
                }
                else
                {
                    state = "0";
                    return(nextCheck);
                }
            }
            else
            {
                state = "0";
                return(nextCheck);
            }
        }
Пример #2
0
        /// <summary>
        /// 当前登录人是否有权限审核并获取下一次审核权限实体
        /// </summary>
        /// <param name="currUser">当前登录人</param>
        /// <param name="state">是否有权限审核 1:能审核 0 :不能审核</param>
        /// <param name="moduleName">模块名称</param>
        /// <param name="createdeptid">创建人部门ID</param>
        /// <returns>null-当前为最后一次审核,ManyPowerCheckEntity:下一次审核权限实体</returns>
        public ManyPowerCheckEntity CheckAuditPower(Operator currUser, out string state, string moduleName, string createdeptid, out string curFlowId)
        {
            ManyPowerCheckEntity   nextCheck  = null;//下一步审核
            IManyPowerCheckService powerCheck = new ManyPowerCheckService();
            //获取流程节点配置
            List <ManyPowerCheckEntity> powerList = powerCheck.GetListBySerialNum(currUser.OrganizeCode, moduleName);

            if (powerList.Count > 0)
            {
                DepartmentEntity department = new DepartmentService().GetEntity(createdeptid);
                foreach (var item in powerList)
                {
                    if (item.CHECKDEPTCODE == "-3" || item.CHECKDEPTID == "-3")
                    {
                        string executedept = department.DepartmentId;
                        //powerList[i].CHECKDEPTCODE = new DepartmentService().GetEntity(ourEngineer.FindEntity(outengineerid).ENGINEERLETDEPTID).EnCode;
                        //powerList[i].CHECKDEPTID = new DepartmentService().GetEntity(ourEngineer.FindEntity(outengineerid).ENGINEERLETDEPTID).DepartmentId;
                        switch (item.ChooseDeptRange) //判断部门范围
                        {
                        case "0":
                            item.CHECKDEPTID   = executedept;
                            item.CHECKDEPTNAME = department.FullName;
                            break;

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

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

                        default:
                            item.CHECKDEPTID   = executedept;
                            item.CHECKDEPTNAME = department.FullName;
                            break;
                        }

                        ////查询 执行部门
                        //item.CHECKDEPTCODE = new DepartmentService().GetEntity(createdeptid).EnCode;
                        //item.CHECKDEPTID = new DepartmentService().GetEntity(createdeptid).DepartmentId;
                    }
                }

                List <ManyPowerCheckEntity> checkPower = new List <ManyPowerCheckEntity>();

                //登录人是否有审核权限--有审核权限直接审核通过
                for (int i = 0; i < powerList.Count; i++)
                {
                    if (powerList[i].CHECKDEPTID == currUser.DeptId)
                    {
                        var rolelist = currUser.RoleName.Split(',');
                        for (int j = 0; j < rolelist.Length; j++)
                        {
                            if (powerList[i].CHECKROLENAME.Contains(rolelist[j]))
                            {
                                checkPower.Add(powerList[i]);
                                break;
                            }
                        }
                    }
                }

                powerList.GroupBy(t => t.SERIALNUM).ToList().Count();
                if (checkPower.Count > 0)
                {
                    state = "1";
                    ManyPowerCheckEntity check = checkPower.Last();//当前
                    curFlowId = check.ID;
                    for (int i = 0; i < powerList.Count; i++)
                    {
                        if (check.ID == powerList[i].ID)
                        {
                            if ((i + 1) >= powerList.Count)
                            {
                                nextCheck = null;
                            }
                            else
                            {
                                nextCheck = powerList[i + 1];
                            }
                        }
                    }
                }
                else
                {
                    state     = "0";
                    curFlowId = "";
                    nextCheck = powerList.First();
                }

                if (nextCheck != null)
                {
                    //当前审核序号下的对应集合
                    var serialList = powerList.Where(p => p.SERIALNUM == nextCheck.SERIALNUM);
                    //集合记录大于1,则表示存在并行审核(审查)的情况
                    if (serialList.Count() > 1)
                    {
                        ManyPowerCheckEntity slastEntity = new ManyPowerCheckEntity();
                        slastEntity = serialList.LastOrDefault();
                        nextCheck   = slastEntity;
                    }
                }

                return(nextCheck);
            }
            else
            {
                state     = "0";
                curFlowId = "";
                return(nextCheck);
            }
        }
Пример #3
0
        /// <summary>
        /// 保存表单(新增、修改)
        /// </summary>
        /// <param name="keyValue">主键值</param>
        /// <param name="entity">实体对象</param>
        /// <param name="moduleName">模块名称(值:设备工器具、特种设备工器具)</param>
        /// <returns></returns>
        public void SaveForm(string keyValue, ToolsAuditEntity entity, string moduleName)
        {
            var      res     = DbFactory.Base().BeginTrans();
            Operator curUser = ERCHTMS.Code.OperatorProvider.Provider.Current();

            try
            {
                string state = string.Empty;

                string outengineerid = keyValue;


                #region  保存工器具
                Repository <ToolsEntity> repAudit = new Repository <ToolsEntity>(DbFactory.Base());
                ToolsEntity smEntity = repAudit.FindEntity(entity.TOOLSID);

                #region //审核信息表
                ToolsAuditEntity aidEntity = new ToolsAuditEntity();
                aidEntity.AUDITID       = Guid.NewGuid().ToString();
                aidEntity.AUDITRESULT   = entity.AUDITRESULT;   //通过
                aidEntity.AUDITTIME     = DateTime.Now;         //审核时间
                aidEntity.AUDITPEOPLE   = entity.AUDITPEOPLE;   //审核人员姓名
                aidEntity.AUDITPEOPLEID = entity.AUDITPEOPLEID; //审核人员id
                aidEntity.TOOLSID       = smEntity.TOOLSID;     //关联的业务ID
                aidEntity.AUDITDEPTID   = entity.AUDITDEPTID;   //审核部门id
                aidEntity.AUDITDEPT     = entity.AUDITDEPT;     //审核部门
                aidEntity.AUDITOPINION  = entity.AUDITOPINION;  //审核意见
                aidEntity.AUDITFILE     = entity.AUDITFILE;     //审核附件
                aidEntity.REMARK        = entity.REMARK;        //备注
                aidEntity.FlowId        = entity.FlowId;
                SaveFormToolAudit("", aidEntity);
                #endregion
                Boolean IsNextFlow = true; //判断是否走下一步流程; 当安全专工跟电气专工验收工器具时没有验收完所有工器具时会继续到专工验收
                Boolean IsPass     = true; //判断是否所有工器具都没有验收通过  false 为所有工器具都没有验收通过
                #region   审核通过
                if (entity.AUDITRESULT == "0")
                {
                    ManyPowerCheckEntity powerentity = new ManyPowerCheckService().GetEntity(entity.FlowId);
                    if (powerentity.FLOWNAME.Contains("验收"))
                    {
                        List <ProjecttoolsEntity> toollist = projecttoolsservice.GetList(" and toolsid ='" + smEntity.TOOLSID + "'").ToList();
                        if (toollist.Where(t => t.Status == null).Count() > 0) //判断是否有没有验收的数据
                        {
                            IsNextFlow = false;
                        }
                        else
                        {
                            if (toollist.Where(t => t.Status == "1").Count() == toollist.Count()) //判断验收不通过的数量是否等于工器具数量
                            {
                                IsPass = false;
                            }
                        }
                    }
                    if (IsNextFlow && IsPass)
                    {
                        ManyPowerCheckEntity mpcEntity = peopleReview.CheckAuditPower(curUser, out state, moduleName, outengineerid, false, entity.FlowId);
                        //0表示流程未完成,1表示流程结束
                        if (null != mpcEntity)
                        {
                            smEntity.FLOWDEPT     = mpcEntity.CHECKDEPTID;
                            smEntity.FLOWDEPTNAME = mpcEntity.CHECKDEPTNAME;
                            smEntity.FLOWROLE     = mpcEntity.CHECKROLEID;
                            smEntity.FLOWROLENAME = mpcEntity.CHECKROLENAME;
                            smEntity.ISSAVED      = "1";
                            smEntity.ISOVER       = "0";
                            smEntity.FlowId       = mpcEntity.ID;
                            smEntity.FLOWNAME     = mpcEntity.CHECKDEPTNAME + "审核中";
                        }
                        else
                        {
                            smEntity.FLOWDEPT     = "";
                            smEntity.FLOWDEPTNAME = "";
                            smEntity.FLOWROLE     = "";
                            smEntity.FLOWROLENAME = "";
                            smEntity.ISSAVED      = "1";
                            smEntity.ISOVER       = "1";
                            smEntity.FLOWNAME     = "";
                            #region 更新工程流程状态
                            Repository <StartappprocessstatusEntity> proecss = new Repository <StartappprocessstatusEntity>(DbFactory.Base());
                            StartappprocessstatusEntity startProecss         = proecss.FindList(string.Format("select * from epg_startappprocessstatus t where t.outengineerid='{0}'", smEntity.OUTENGINEERID)).ToList().FirstOrDefault();
                            startProecss.EQUIPMENTTOOLSTATUS = "1";
                            res.Update <StartappprocessstatusEntity>(startProecss);
                            #endregion
                            #region  步设备
                            if (moduleName == "特种设备工器具")
                            {
                                new SpecialEquipmentService().SyncSpecificTools(smEntity.OUTENGINEERID, smEntity.OUTPROJECTID, smEntity.TOOLSID);
                            }
                            #endregion
                        }
                    }
                }
                #endregion
                #region  审核不通过
                if (entity.AUDITRESULT == "1" || IsPass == false)
                {
                    smEntity.FLOWDEPT     = "";
                    smEntity.FLOWDEPTNAME = "";
                    smEntity.FLOWROLE     = "";
                    smEntity.FLOWROLENAME = "";
                    smEntity.ISSAVED      = "0"; //处于登记阶段
                    smEntity.ISOVER       = "0"; //是否完成状态赋值为未完成
                    smEntity.FLOWNAME     = "";
                    #region 审核不通过保存工器具历史数据
                    var str = JsonConvert.SerializeObject(smEntity);
                    HistoryToolsEntity histools = JsonConvert.DeserializeObject <HistoryToolsEntity>(str);
                    histools.ID      = Guid.NewGuid().ToString();
                    histools.TOOLSID = smEntity.TOOLSID;
                    res.Insert <HistoryToolsEntity>(histools);
                    //施工机具
                    Repository <ProjecttoolsEntity> protools      = new Repository <ProjecttoolsEntity>(DbFactory.Base());
                    List <ProjecttoolsEntity>       protools_list = protools.FindList(string.Format(@"select * from epg_projecttools t where t.toolsid='{0}'", smEntity.TOOLSID)).ToList();
                    res.ExecuteBySql(string.Format("update epg_projecttools set Status='',CHECKOPTION=''  where toolsid='{0}'", smEntity.TOOLSID));
                    if (protools_list.Count > 0)
                    {
                        var str_protools = JsonConvert.SerializeObject(protools_list);
                        List <HistoryProtoolsEntity> hisprolist = JsonConvert.DeserializeObject <List <HistoryProtoolsEntity> >(str_protools);
                        for (int i = 0; i < hisprolist.Count; i++)
                        {
                            hisprolist[i].ID = Guid.NewGuid().ToString();
                            //同步附件
                            var file1 = fileService.GetFiles(protools_list[i].PROJECTTOOLSID);
                            if (file1.Rows.Count > 0)
                            {
                                var key = hisprolist[i].ID;
                                foreach (DataRow item in file1.Rows)
                                {
                                    FileInfoEntity itemFile = new FileInfoEntity();
                                    itemFile.FileName = item["FileName"].ToString();
                                    itemFile.FilePath = item["filepath"].ToString();
                                    itemFile.FileSize = item["filesize"].ToString();
                                    itemFile.RecId    = key;
                                    fileService.SaveForm(itemFile.FileId, itemFile);
                                }
                            }
                            hisprolist[i].TOOLSID = histools.ID;
                        }
                        res.Insert <HistoryProtoolsEntity>(hisprolist);
                    }
                    //特种设备
                    Repository <SpecificToolsEntity> spetools      = new Repository <SpecificToolsEntity>(DbFactory.Base());
                    List <SpecificToolsEntity>       spetools_list = spetools.FindList(string.Format(@"select * from epg_specifictools t where t.toolsid='{0}'", smEntity.TOOLSID)).ToList();
                    if (spetools_list.Count > 0)
                    {
                        var str_spetools = JsonConvert.SerializeObject(spetools_list);
                        List <HistorySpecificToolsEntity> hisspelist = JsonConvert.DeserializeObject <List <HistorySpecificToolsEntity> >(str_spetools);
                        for (int i = 0; i < hisspelist.Count; i++)
                        {
                            hisspelist[i].SPECIFICTOOLSID = Guid.NewGuid().ToString();
                            hisspelist[i].TOOLSID         = histools.ID;
                            //同步附件
                            var file1 = fileService.GetFiles(spetools_list[i].REGISTERCARDFILE);
                            var file2 = fileService.GetFiles(spetools_list[i].QUALIFIED);
                            var file3 = fileService.GetFiles(spetools_list[i].CHECKREPORTFILE);
                            var file4 = fileService.GetFiles(spetools_list[i].SPECIFICTOOLSFILE);
                            if (file1.Rows.Count > 0)
                            {
                                hisspelist[i].REGISTERCARDFILE = Guid.NewGuid().ToString();
                                var key = hisspelist[i].REGISTERCARDFILE;
                                foreach (DataRow item in file1.Rows)
                                {
                                    FileInfoEntity itemFile = new FileInfoEntity();
                                    itemFile.FileName = item["FileName"].ToString();
                                    itemFile.FilePath = item["filepath"].ToString();
                                    itemFile.FileSize = item["filesize"].ToString();
                                    itemFile.RecId    = key;
                                    fileService.SaveForm(itemFile.FileId, itemFile);
                                }
                            }
                            if (file2.Rows.Count > 0)
                            {
                                hisspelist[i].QUALIFIED = Guid.NewGuid().ToString();
                                var key = hisspelist[i].QUALIFIED;
                                foreach (DataRow item in file2.Rows)
                                {
                                    FileInfoEntity itemFile = new FileInfoEntity();
                                    itemFile.FileName = item["FileName"].ToString();
                                    itemFile.FilePath = item["filepath"].ToString();
                                    itemFile.FileSize = item["filesize"].ToString();
                                    itemFile.RecId    = key;
                                    fileService.SaveForm(itemFile.FileId, itemFile);
                                }
                            }
                            if (file3.Rows.Count > 0)
                            {
                                hisspelist[i].CHECKREPORTFILE = Guid.NewGuid().ToString();
                                var key = hisspelist[i].CHECKREPORTFILE;
                                foreach (DataRow item in file3.Rows)
                                {
                                    FileInfoEntity itemFile = new FileInfoEntity();
                                    itemFile.FileName = item["FileName"].ToString();
                                    itemFile.FilePath = item["filepath"].ToString();
                                    itemFile.FileSize = item["filesize"].ToString();
                                    itemFile.RecId    = key;
                                    fileService.SaveForm(itemFile.FileId, itemFile);
                                }
                            }
                            if (file4.Rows.Count > 0)
                            {
                                hisspelist[i].SPECIFICTOOLSFILE = Guid.NewGuid().ToString();
                                var key = hisspelist[i].SPECIFICTOOLSFILE;
                                foreach (DataRow item in file4.Rows)
                                {
                                    FileInfoEntity itemFile = new FileInfoEntity();
                                    itemFile.FileName = item["FileName"].ToString();
                                    itemFile.FilePath = item["filepath"].ToString();
                                    itemFile.FileSize = item["filesize"].ToString();
                                    itemFile.RecId    = key;
                                    fileService.SaveForm(itemFile.FileId, itemFile);
                                }
                            }
                        }
                        res.Insert <HistorySpecificToolsEntity>(hisspelist);
                    }
                    //获取当前业务对象的所有审核记录
                    var shlist = GetAuditList(entity.TOOLSID);
                    //批量更新审核记录关联ID
                    foreach (ToolsAuditEntity mode in shlist)
                    {
                        mode.TOOLSID = histools.ID; //对应新的ID
                        //同步附件
                        var file = fileService.GetFiles(mode.AUDITFILE);
                        if (file.Rows.Count > 0)
                        {
                            var key = histools.ID;
                            foreach (DataRow item in file.Rows)
                            {
                                FileInfoEntity itemFile = new FileInfoEntity();
                                itemFile.FileName = item["FileName"].ToString();
                                itemFile.FilePath = item["filepath"].ToString();
                                itemFile.FileSize = item["filesize"].ToString();
                                itemFile.RecId    = key;
                                fileService.SaveForm(itemFile.FileId, itemFile);
                            }
                        }
                        res.Update <ToolsAuditEntity>(mode);
                    }
                    #endregion
                }
                res.Update <ToolsEntity>(smEntity);
                res.Commit();
                #endregion
                #endregion
            }
            catch (Exception ex)
            {
                res.Rollback();
            }
        }
        /// <summary>
        /// 待审(核)批单位资质审查、待审(核)批人员资质审查、待审(核)批三措两案、待审(核)批特种设备验收、待审(核)批安全/电动工器具验收、待审(核)批入厂许可、待审(核)批开工申请
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public List <int> ToAuditOutPeoject(Operator currUser)
        {
            List <int> toAuditNum = new List <int>();
            string     role       = currUser.RoleName;
            string     deptId     = string.Empty;
            string     deptName   = string.Empty;

            //公司级用户取机构对象
            if (role.Contains("公司级用户"))
            {
                deptId   = currUser.OrganizeId;   //机构ID
                deptName = currUser.OrganizeName; //机构名称
            }
            else
            {
                deptId   = currUser.DeptId;   //部门ID
                deptName = currUser.DeptName; //部门ID
            }
            string sql = string.Empty;

            string[] arrRole = role.Split(',');

            string strWhere = string.Empty;

            #region 单位资质审查待审核(查)
            sql = string.Empty;
            sql = string.Format("select '' as approveuserids,outengineerid,flowid,id from epg_aptitudeinvestigateinfo s ");

            strWhere  = string.Empty;
            strWhere += string.Format(" where  s.isauditover=0 and s.createuserorgcode='{0}' and s.issaveorcommit='1' ", currUser.OrganizeCode);

            var dt = this.BaseRepository().FindTable(sql + strWhere);
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                var engineerEntity  = new OutsouringengineerService().GetEntity(dt.Rows[i]["outengineerid"].ToString());
                var excutdept       = new DepartmentService().GetEntity(engineerEntity.ENGINEERLETDEPTID).DepartmentId;
                var outengineerdept = new DepartmentService().GetEntity(engineerEntity.OUTPROJECTID).DepartmentId;
                var supervisordept  = string.IsNullOrEmpty(engineerEntity.SupervisorId) ? "" : new DepartmentService().GetEntity(engineerEntity.SupervisorId).DepartmentId;
                //获取下一步审核人
                string str = new ManyPowerCheckService().GetApproveUserId(dt.Rows[i]["flowid"].ToString(), dt.Rows[i]["outengineerid"].ToString(), "", "", excutdept, outengineerdept, "", "", "", supervisordept, dt.Rows[i]["outengineerid"].ToString());
                dt.Rows[i]["approveuserids"] = str;
            }

            string[] applyids = dt.Select(" approveuserids like '%" + currUser.UserId + "%'").AsEnumerable().Select(d => d.Field <string>("id")).ToArray();
            if (applyids.Length > 0)
            {
                toAuditNum.Add(applyids.Length);
            }
            else
            {
                toAuditNum.Add(0);
            }
            #endregion
            #region 人员审查待审核
            sql = string.Empty;
            sql = string.Format("select '' as approveuserids,outengineerid,flowid,id from epg_peoplereview s ");

            strWhere  = string.Empty;
            strWhere += string.Format(" where  s.createuserorgcode='{0}' and isauditover=0 and s.issaveorcommit='1' ", currUser.OrganizeCode);
            dt        = this.BaseRepository().FindTable(sql + strWhere);
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                var engineerEntity  = new OutsouringengineerService().GetEntity(dt.Rows[i]["outengineerid"].ToString());
                var excutdept       = new DepartmentService().GetEntity(engineerEntity.ENGINEERLETDEPTID).DepartmentId;
                var outengineerdept = new DepartmentService().GetEntity(engineerEntity.OUTPROJECTID).DepartmentId;
                var supervisordept  = string.IsNullOrEmpty(engineerEntity.SupervisorId) ? "" : new DepartmentService().GetEntity(engineerEntity.SupervisorId).DepartmentId;
                //获取下一步审核人
                string str = new ManyPowerCheckService().GetApproveUserId(dt.Rows[i]["flowid"].ToString(), dt.Rows[i]["outengineerid"].ToString(), "", "", excutdept, outengineerdept, "", "", "", supervisordept, dt.Rows[i]["outengineerid"].ToString());
                dt.Rows[i]["approveuserids"] = str;
            }

            applyids = dt.Select(" approveuserids like '%" + currUser.UserId + "%'").AsEnumerable().Select(d => d.Field <string>("id")).ToArray();
            if (applyids.Length > 0)
            {
                toAuditNum.Add(applyids.Length);
            }
            else
            {
                toAuditNum.Add(0);
            }
            #endregion
            #region  措两案待审核
            sql = string.Empty;
            sql = string.Format("select '' as approveuserids,projectid,flowid,id,ENGINEERLETDEPTID from epg_schememeasure s ");

            strWhere  = string.Empty;
            strWhere += string.Format(" where s.createuserorgcode='{0}' and s.isover='0' and s.issaved='1' ", currUser.OrganizeCode);
            dt        = this.BaseRepository().FindTable(sql + strWhere);
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                var engineerEntity = new OutsouringengineerService().GetEntity(dt.Rows[i]["projectid"].ToString());
                if (engineerEntity != null)
                {
                    var excutdept       = new DepartmentService().GetEntity(engineerEntity.ENGINEERLETDEPTID).DepartmentId;
                    var outengineerdept = new DepartmentService().GetEntity(engineerEntity.OUTPROJECTID).DepartmentId;
                    var supervisordept  = string.IsNullOrEmpty(engineerEntity.SupervisorId) ? "" : new DepartmentService().GetEntity(engineerEntity.SupervisorId).DepartmentId;
                    //获取下一步审核人
                    string str = new ManyPowerCheckService().GetApproveUserId(dt.Rows[i]["flowid"].ToString(), dt.Rows[i]["id"].ToString(), "", "", excutdept, outengineerdept, "", "", "", supervisordept, dt.Rows[i]["projectid"].ToString());
                    dt.Rows[i]["approveuserids"] = str;
                }
                else
                {
                    string str = new ManyPowerCheckService().GetApproveUserId(dt.Rows[i]["flowid"].ToString(), dt.Rows[i]["id"].ToString(), "", "", dt.Rows[i]["engineerletdeptid"].ToString(), "", "", "", "", "", dt.Rows[i]["projectid"].ToString());
                    dt.Rows[i]["approveuserids"] = str;
                }


                //dt.Rows[i]["approveuserids"] = str;
            }

            applyids = dt.Select(" approveuserids like '%" + currUser.UserId + "%'").AsEnumerable().Select(d => d.Field <string>("id")).ToArray();
            if (applyids.Length > 0)
            {
                toAuditNum.Add(applyids.Length);
            }
            else
            {
                toAuditNum.Add(0);
            }
            #endregion
            #region 特种设备
            sql = string.Empty;
            sql = string.Format("select '' as approveuserids,outengineerid,flowid,toolsid from epg_tools s ");

            strWhere  = string.Empty;
            strWhere += string.Format(" where  equiptype='2'  and s.createuserorgcode='{0}' and s.isover='0' and s.issaved='1'   ", currUser.OrganizeCode);
            dt        = this.BaseRepository().FindTable(sql + strWhere);
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                var engineerEntity  = new OutsouringengineerService().GetEntity(dt.Rows[i]["outengineerid"].ToString());
                var excutdept       = new DepartmentService().GetEntity(engineerEntity.ENGINEERLETDEPTID).DepartmentId;
                var outengineerdept = new DepartmentService().GetEntity(engineerEntity.OUTPROJECTID).DepartmentId;
                var supervisordept  = string.IsNullOrEmpty(engineerEntity.SupervisorId) ? "" : new DepartmentService().GetEntity(engineerEntity.SupervisorId).DepartmentId;
                //获取下一步审核人
                string str = new ManyPowerCheckService().GetApproveUserId(dt.Rows[i]["flowid"].ToString(), dt.Rows[i]["toolsid"].ToString(), "", "", excutdept, outengineerdept, "", "", "", supervisordept, dt.Rows[i]["outengineerid"].ToString());
                dt.Rows[i]["approveuserids"] = str;
            }

            applyids = dt.Select(" approveuserids like '%" + currUser.UserId + "%'").AsEnumerable().Select(d => d.Field <string>("toolsid")).ToArray();
            if (applyids.Length > 0)
            {
                toAuditNum.Add(applyids.Length);
            }
            else
            {
                toAuditNum.Add(0);
            }
            #endregion
            #region 普通设备
            sql = string.Empty;
            sql = string.Format("select '' as approveuserids,outengineerid,flowid,toolsid from epg_tools s ");

            strWhere  = string.Empty;
            strWhere += string.Format(" where  equiptype='1'  and s.createuserorgcode='{0}' and s.isover='0' and s.issaved='1'   ", currUser.OrganizeCode);
            dt        = this.BaseRepository().FindTable(sql + strWhere);
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                var engineerEntity  = new OutsouringengineerService().GetEntity(dt.Rows[i]["outengineerid"].ToString());
                var excutdept       = new DepartmentService().GetEntity(engineerEntity.ENGINEERLETDEPTID).DepartmentId;
                var outengineerdept = new DepartmentService().GetEntity(engineerEntity.OUTPROJECTID).DepartmentId;
                var supervisordept  = string.IsNullOrEmpty(engineerEntity.SupervisorId) ? "" : new DepartmentService().GetEntity(engineerEntity.SupervisorId).DepartmentId;
                //获取下一步审核人
                string str = new ManyPowerCheckService().GetApproveUserId(dt.Rows[i]["flowid"].ToString(), dt.Rows[i]["toolsid"].ToString(), "", "", excutdept, outengineerdept, "", "", "", supervisordept, dt.Rows[i]["outengineerid"].ToString());
                dt.Rows[i]["approveuserids"] = str;
            }

            applyids = dt.Select(" approveuserids like '%" + currUser.UserId + "%'").AsEnumerable().Select(d => d.Field <string>("toolsid")).ToArray();
            if (applyids.Length > 0)
            {
                toAuditNum.Add(applyids.Length);
            }
            else
            {
                toAuditNum.Add(0);
            }
            #endregion
            #region 入场许可
            sql = string.Empty;
            sql = string.Format("select '' as approveuserids,outengineerid,flowid,id from epg_intromission s ");

            strWhere  = string.Empty;
            strWhere += string.Format(" where   s.createuserorgcode='{0}' and (s.investigatestate='1' or s.investigatestate='2')   ", currUser.OrganizeCode);
            dt        = this.BaseRepository().FindTable(sql + strWhere);
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                var engineerEntity  = new OutsouringengineerService().GetEntity(dt.Rows[i]["outengineerid"].ToString());
                var excutdept       = new DepartmentService().GetEntity(engineerEntity.ENGINEERLETDEPTID).DepartmentId;
                var outengineerdept = new DepartmentService().GetEntity(engineerEntity.OUTPROJECTID).DepartmentId;
                var supervisordept  = string.IsNullOrEmpty(engineerEntity.SupervisorId) ? "" : new DepartmentService().GetEntity(engineerEntity.SupervisorId).DepartmentId;
                //获取下一步审核人
                string str = new ManyPowerCheckService().GetApproveUserId(dt.Rows[i]["flowid"].ToString(), dt.Rows[i]["id"].ToString(), "", "", excutdept, outengineerdept, "", "", "", supervisordept, dt.Rows[i]["outengineerid"].ToString());
                dt.Rows[i]["approveuserids"] = str;
            }

            applyids = dt.Select(" approveuserids like '%" + currUser.UserId + "%'").AsEnumerable().Select(d => d.Field <string>("id")).ToArray();
            if (applyids.Length > 0)
            {
                toAuditNum.Add(applyids.Length);
            }
            else
            {
                toAuditNum.Add(0);
            }
            //sql = string.Empty;
            //sql = string.Format("select count(id) intromnum from epg_intromission s ");
            //strWhere = string.Empty;
            //foreach (string str in arrRole)
            //{
            //    //审查内容
            //    strWhere += string.Format(@" select distinct a.id  from epg_intromission a
            //                                    left join  bis_manypowercheck b on a.flowid = b.id
            //                                    left join bis_manypowercheck c on  b.serialnum = c.serialnum and b.moduleno = c.moduleno
            //                                    left join epg_outsouringengineer d on a.outengineerid = d.id
            //                                    where  a.investigatestate ='1'  and  ((c.checkdeptid ='-1' and d.engineerletdeptid='{0}'  and c.checkrolename like '%{1}%')
            //                                    or (c.checkdeptid =  '{0}'  and c.checkrolename like '%{1}%') or ( c.checkdeptid ='-2' and d.outprojectid='{0}'  and c.checkrolename like '%{1}%'))
            //                                    union
            //                                    ", deptId, str);

            //    //审核内容
            //    strWhere += string.Format(@"   select  distinct a.id from epg_intromission a  where a.flowdept='{0}' and a.flowrolename like '%{1}%' and  a.investigatestate ='2'
            //                                    union", deptId, str);
            //}
            //if (!string.IsNullOrEmpty(strWhere))
            //{
            //    strWhere = strWhere.Substring(0, strWhere.Length - 5);
            //}
            //var conditionDt1 = new IntromissionService().GetDataTableBySql(strWhere);
            //string ids1 = string.Empty;
            //foreach (DataRow row in conditionDt1.Rows)
            //{
            //    ids1 += "'" + row["id"].ToString() + "',";
            //}
            //if (!string.IsNullOrEmpty(ids1))
            //{
            //    ids1 = ids1.Substring(0, ids1.Length - 1);

            //    sql += string.Format("where s.id in ({0})", ids1);
            //}
            //else
            //{
            //    sql += string.Format("where 1!=1 ");
            //}
            //sql += string.Format("  and s.createuserorgcode='{0}'", currUser.OrganizeCode);
            //strWhere = string.Empty;
            //strWhere += string.Format(" where  s.flowdept like'%{0}%' and s.createuserorgcode='{1}' and s.investigatestate !='3'  ", currUser.DeptId, currUser.OrganizeCode);
            //strWhere += " and (";
            //foreach (string str in arrRole)
            //{
            //    strWhere += string.Format(" s.flowrolename  like '%{0}%' or", str);
            //}
            //strWhere = strWhere.Substring(0, strWhere.Length - 2);
            //strWhere += " )";
            //sql = sql + strWhere;
            //dt = this.BaseRepository().FindTable(sql);
            //if (dt.Rows.Count > 0)
            //{
            //    toAuditNum.Add(Convert.ToInt32(dt.Rows[0]["intromnum"].ToString()));
            //}
            //else
            //{
            //    toAuditNum.Add(0);
            //}
            #endregion
            #region 开工申请待审核(查)

            sql = string.Empty;
            sql = string.Format("select '' as approveuserids,outengineerid,nodeid,id from epg_startapplyfor s ");

            strWhere  = string.Empty;
            strWhere += string.Format(" where  s.createuserorgcode='{0}' and  s.iscommit ='1' and  s.isover =0    ", currUser.OrganizeCode);
            dt        = this.BaseRepository().FindTable(sql + strWhere);
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                var engineerEntity  = new OutsouringengineerService().GetEntity(dt.Rows[i]["outengineerid"].ToString());
                var excutdept       = new DepartmentService().GetEntity(engineerEntity.ENGINEERLETDEPTID).DepartmentId;
                var outengineerdept = new DepartmentService().GetEntity(engineerEntity.OUTPROJECTID).DepartmentId;
                var supervisordept  = string.IsNullOrEmpty(engineerEntity.SupervisorId) ? "" : new DepartmentService().GetEntity(engineerEntity.SupervisorId).DepartmentId;
                //获取下一步审核人
                string str = new ManyPowerCheckService().GetApproveUserId(dt.Rows[i]["nodeid"].ToString(), dt.Rows[i]["id"].ToString(), "", "", excutdept, outengineerdept, "", "", "", supervisordept, dt.Rows[i]["outengineerid"].ToString());
                dt.Rows[i]["approveuserids"] = str;
            }

            applyids = dt.Select(" approveuserids like '%" + currUser.UserId + "%'").AsEnumerable().Select(d => d.Field <string>("id")).ToArray();
            if (applyids.Length > 0)
            {
                toAuditNum.Add(applyids.Length);
            }
            else
            {
                toAuditNum.Add(0);
            }
            #endregion
            #region 待审核安全技术交底
            sql = string.Empty;
            sql = string.Format("select '' as approveuserids,projectid as outengineerid,flowid,id from epg_techdisclosure s ");

            strWhere  = string.Empty;
            strWhere += string.Format(" where  s.status=1 and s.createuserorgcode='{0}' and s.issubmit=1 ", currUser.OrganizeCode);

            dt = this.BaseRepository().FindTable(sql + strWhere);
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                var engineerEntity  = new OutsouringengineerService().GetEntity(dt.Rows[i]["outengineerid"].ToString());
                var excutdept       = engineerEntity == null ? "" : new DepartmentService().GetEntity(engineerEntity.ENGINEERLETDEPTID).DepartmentId;
                var outengineerdept = engineerEntity == null ? "" : new DepartmentService().GetEntity(engineerEntity.OUTPROJECTID).DepartmentId;
                var supervisordept  = engineerEntity == null ? "" : string.IsNullOrEmpty(engineerEntity.SupervisorId) ? "" : new DepartmentService().GetEntity(engineerEntity.SupervisorId).DepartmentId;
                //获取下一步审核人
                string str = new ManyPowerCheckService().GetApproveUserId(dt.Rows[i]["flowid"].ToString(), dt.Rows[i]["id"].ToString(), "", "", excutdept, outengineerdept, "", "", "", supervisordept, dt.Rows[i]["outengineerid"].ToString());
                dt.Rows[i]["approveuserids"] = str;
            }
            applyids = dt.Select(" approveuserids like '%" + currUser.UserId + "%'").AsEnumerable().Select(d => d.Field <string>("id")).ToArray();
            if (applyids.Length > 0)
            {
                toAuditNum.Add(applyids.Length);
            }
            else
            {
                toAuditNum.Add(0);
            }
            #endregion
            return(toAuditNum);
        }
Пример #5
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);
        }