示例#1
0
        /// <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 + "】审核人没有设置");
        }
示例#2
0
        /// <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);
            }
        }