/// <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); } }
/// <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); } }
/// <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); }
/// <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); }