/// <summary> /// 获取当前部门的审核人 /// </summary> /// <param name="dep">部门</param> /// <param name="processName">流程名称</param> /// <returns></returns> protected flow_applyEntryQueue GetGivenDepAuditor(ei_department dep, string processName, bool canBeNull = false) { var auditNodes = db.ei_departmentAuditNode.Where(a => a.ei_department == dep && a.FProcessName == processName && a.ei_department.FIsAuditNode == true).ToList(); ei_departmentAuditNode node = null; if (auditNodes.Count() > 0) { if (auditNodes.First().ei_departmentAuditUser.Where(u => u.FBeginTime <= DateTime.Now && u.FEndTime >= DateTime.Now && (u.isDeleted == false || u.isDeleted == null)).Count() > 0) { node = auditNodes.First(); } } else { if (canBeNull) { return(null); } throw new Exception("部门(" + dep.FNumber + ":" + dep.FName + ")没有启用审批节点"); } if (node != null) { flow_applyEntryQueue queue = new flow_applyEntryQueue(); queue.countersign = node.FIsCounterSign; queue.step_name = node.FAuditNodeName; queue.auditors = string.Join(";", node.ei_departmentAuditUser.Where(u => u.FBeginTime <= DateTime.Now && u.FEndTime >= DateTime.Now && (u.isDeleted == false || u.isDeleted == null)).Select(u => u.FAuditorNumber).ToArray()); return(queue); } throw new Exception("部门(" + dep.FNumber + ":" + dep.FName + ")【" + auditNodes.First().FAuditNodeName + "】审核人没有设置"); }
/// <summary> /// 获取上级部门审核人 /// </summary> /// <param name="depNo">申请人部门</param> /// <param name="skipNum">跳过的部门审核人数量</param> /// <param name="processName">流程名称</param> /// <returns></returns> protected flow_applyEntryQueue GetParentDepAuditor(string depNo, string processName, int skipNum = 0, bool canBeNull = true) { ei_department dep; try { dep = db.ei_department.Single(d => d.FNumber == depNo); } catch { throw new Exception("部门不存在,编码:" + depNo); } string[] spNode = new string[] { "AH审批", "行政审批" }; var auditNodes = db.ei_departmentAuditNode.Where(a => a.ei_department == dep && a.FProcessName == processName && a.ei_department.FIsAuditNode == true && !spNode.Contains(a.FAuditNodeName)).ToList(); ei_departmentAuditNode node = null; int currentNum = 0; while (node == null && dep != null) { if (auditNodes.Count() > 0) { if (auditNodes.First().ei_departmentAuditUser.Where(u => u.FBeginTime <= DateTime.Now && u.FEndTime >= DateTime.Now && (u.isDeleted == false || u.isDeleted == null)).Count() > 0) { currentNum++; if (currentNum > skipNum) { node = auditNodes.First(); break; } } } if (dep.FParent != null) { dep = db.ei_department.Single(d => d.FNumber == dep.FParent); auditNodes = db.ei_departmentAuditNode.Where(a => a.ei_department == dep && a.FProcessName == processName && a.ei_department.FIsAuditNode == true && !spNode.Contains(a.FAuditNodeName)).ToList(); } else { dep = null; } } if (node != null) { flow_applyEntryQueue queue = new flow_applyEntryQueue(); queue.countersign = node.FIsCounterSign; queue.step_name = node.FAuditNodeName; queue.auditors = string.Join(";", node.ei_departmentAuditUser.Where(u => u.FBeginTime <= DateTime.Now && u.FEndTime >= DateTime.Now && (u.isDeleted == false || u.isDeleted == null)).Select(u => u.FAuditorNumber).ToArray()); return(queue); } if (!canBeNull) { throw new Exception("上级部门审核人没有设置,错误代码:" + depNo + "-" + skipNum); } else { return(null); } }