Exemple #1
0
        public static List <EmployeeInfo> GetEmployeeList(DeptInfo dept, bool onlyOnJob)
        {
            List <EmployeeInfo> list = new List <EmployeeInfo>();

            GroupOperator criteria = criteria = new GroupOperator(GroupOperatorType.And);

            //只要在职员工
            if (onlyOnJob)
            {
                criteria.Operands.Add(new BinaryOperator("状态", "A", BinaryOperatorType.Equal));
            }
            if (dept != null)
            {
                criteria.Operands.Add(new BinaryOperator("部门", dept.部门编号, BinaryOperatorType.Equal));
            }

            XPCollection objset = null;

            objset = new XPCollection(typeof(EmployeeInfo), criteria, new SortProperty("薪资组", SortingDirection.Ascending), new SortProperty("职务等级", SortingDirection.Ascending), new SortProperty("员工序号", SortingDirection.Ascending), new SortProperty("创建时间", SortingDirection.Ascending));

            foreach (EmployeeInfo item in objset)
            {
                list.Add(item);
            }
            return(list);
        }
Exemple #2
0
        /// <summary>
        /// 获取所有下属部门
        /// </summary>
        /// <returns></returns>
        public List <DeptInfo> GetDescendants()
        {
            DeptInfo        parent = this.Parent;
            List <DeptInfo> list   = new List <DeptInfo>();

            GetDescendants(this, ref list);
            return(list);
        }
Exemple #3
0
 //检查指定的部门是否是子孙
 public bool IsDescendant(DeptInfo dept)
 {
     if (dept == null)
     {
         return(false);
     }
     return(dept.IsAncestor(部门编号));
 }
Exemple #4
0
        public static string GetGrade1(SalaryResult sr)
        {
            //有二级分类的职务等级
            string JOB_HAS_SECONDARY = "主任|副主任|工程师|班长|";

            try
            {
                if (sr.职等名称 == null)
                {
                    return(null);
                }

                //职等默认等于职务等级
                string grade = GetGrade(sr.职等名称);

                if (JOB_HAS_SECONDARY.IndexOf(grade + "|") == -1)
                {
                    return(grade);
                }
                else
                {
                    DeptInfo dept = sr.所在机构.部门;
                    //如果找不到部门
                    if (dept == null)
                    {
                        return(grade);
                    }

                    //获取部门板块属性
                    string fun = dept.职能类型;

                    //获取班长岗位级别
                    string level = "";
                    if (sr.所在机构.车间 != null)
                    {
                        MonitorLevel mv = MonitorLevel.Get(sr.所在机构.车间.部门编号, sr.职务代码);
                        if (mv != null)
                        {
                            level = mv.级别名称;
                        }
                    }

                    if (level == "")
                    {
                        return(fun + grade);
                    }
                    else
                    {
                        return(level + grade);
                    }
                }
            }
            catch (Exception err)
            {
                Common.WriteLog(Environment.CurrentDirectory + "\\LogFiles\\Error.log", err.ToString());
            }
            return(null);
        }
Exemple #5
0
        public void GetDescendants(DeptInfo dept, ref List <DeptInfo> all)
        {
            List <DeptInfo> list = 组织机构表.FindAll(a => a.Parent == dept);

            all.AddRange(list);
            foreach (DeptInfo child in list)
            {
                GetDescendants(child, ref all);
            }
        }
Exemple #6
0
        public static string GetGrade2(EmployeeInfo empInfo)
        {
            //有二级分类的职务等级
            string JOB_HAS_SECONDARY = "经理|副经理|科员|";

            try
            {
                if (empInfo.职等名称 == null)
                {
                    return(null);
                }

                //职等默认等于职务等级
                string grade = GetGrade(empInfo.职等名称);

                if (JOB_HAS_SECONDARY.IndexOf(grade + "|") == -1)
                {
                    return(grade);
                }
                else
                {
                    DeptInfo dept = empInfo.所在部门.部门;
                    //如果找不到部门
                    if (dept == null)
                    {
                        return(grade);
                    }

                    //获取部门板块属性
                    string fun = dept.职能类型;


                    if (fun == "部门")
                    {
                        return("部门" + grade);
                    }
                    else
                    {
                        if (grade == "科员")
                        {
                            return("林场科员");
                        }
                        else
                        {
                            return("经营区" + grade);
                        }
                    }
                }
            }
            catch (Exception err)
            {
                Common.WriteLog(Environment.CurrentDirectory + "\\LogFiles\\Error.log", err.ToString());
            }
            return(null);
        }
Exemple #7
0
        /// <summary>
        /// 获取所有上级部门
        /// </summary>
        /// <returns></returns>
        public List <DeptInfo> GetAncestors()
        {
            DeptInfo        parent = this.Parent;
            List <DeptInfo> list   = new List <DeptInfo>();

            while (parent != null)
            {
                list.Add(parent);
                parent = parent.Parent;
            }
            return(list);
        }
Exemple #8
0
        public EmployeeSalary(SalaryResult sr, PrivateSalary ps)
        {
            表工资  = sr;
            封闭工资 = ps;

            //处理,获取相关数据
            this.员工编号 = sr.员工编号;
            this.姓名   = sr.姓名;
            this.职务   = PsHelper.GetValue(PsHelper.职务代码, 表工资.职务代码);
            this.年度   = sr.年度.ToString() + " 年";
            this.月份   = sr.月份.ToString() + " 月";
            this.季度   = (Convert.ToInt32(sr.月份 / 3) + 1).ToString() + " 季度";
            //this.金额 = 封闭工资 == null ? 上表工资.上表工资 : 封闭工资.职级工资;
            this.金额 = 封闭工资 == null ?  表工资.表工资总额 : 封闭工资.工资发放总额;
            this.职等 = sr.职等;

            this.发放单位 = sr.财务公司;
            DeptInfo dept = DeptInfo.Get(sr.机构编号);

            if (dept != null)
            {
                this.本部 = dept.本部;
                this.体系 = dept.体系;

                this.公司 = dept.公司.部门名称;
                if (dept.部门 != null)
                {
                    this.部门 = dept.部门.部门名称;
                }
                if (dept.区域 != null)
                {
                    this.区域 = dept.区域.部门名称;
                }
                if (dept.省办 != null)
                {
                    this.省办 = dept.省办.部门名称.Replace("省办", "");
                }
                if (dept.城市 != null)
                {
                    this.城市 = dept.城市.部门名称.Replace("市办", "");
                }
            }
            else
            {
                CompanyInfo company = CompanyInfo.Get(sr.公司编号);
                if (company != null)
                {
                    this.公司 = company.公司简称;
                }
            }
        }
Exemple #9
0
        //获取值列表
        public static List <DeptInfo> GetAll()
        {
            List <DeptInfo> list = new List <DeptInfo>();
            OleDbConnection conn = new OleDbConnection(MyHelper.GetPsConnectionString());

            using (conn)
            {
                OleDbDataReader rs = null;
                try
                {
                    conn.Open();
                    using (OleDbCommand cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = "SELECT COMPANY, DEPTID , PARENT_NODE_NAME , DESCRSHORT , EFFDT , C_DEPT_LEVEL, EFF_STATUS, C_DEPT_ORDER FROM PS_C_DEPT_TBL_VW";
                        rs = cmd.ExecuteReader();
                        while (rs.Read())
                        {
                            DeptInfo dpt = new DeptInfo();

                            dpt.公司编码 = ((string)rs["COMPANY"]).Trim();
                            dpt.部门编号 = ((string)rs["DEPTID"]).Trim();
                            dpt.级编号  = ((string)rs["PARENT_NODE_NAME"]).Trim();
                            dpt.部门名称 = ((string)rs["DESCRSHORT"]).Trim();
                            if (rs["C_DEPT_LEVEL"] != DBNull.Value && YiKang.Common.IsInteger(Convert.ToString(rs["C_DEPT_LEVEL"])))
                            {
                                dpt.部门层级 = Convert.ToInt32(rs["C_DEPT_LEVEL"]);
                            }
                            dpt.生效日期 = Convert.ToDateTime(rs["EFFDT"]);
                            dpt.效    = (string)rs["EFF_STATUS"] == "A";
                            dpt.部门序号 = Convert.ToInt32(rs["C_DEPT_ORDER"]);

                            list.Add(dpt);
                        }
                        rs.Close();
                    }
                }
                finally
                {
                    if (rs != null)
                    {
                        rs.Close();
                    }
                    conn.Close();
                }
            }
            return(list);
        }
Exemple #10
0
        public static DeptInfo Get(string deptId)
        {
            if (deptId == null)
            {
                return(null);
            }

            DeptInfo dept = 组织机构表.Find(a => a.部门编号 == deptId.Trim());

            if (dept != null)
            {
                dept.Resolve();
                if (dept.部门体系 != null)
                {
                    dept.体系 = dept.部门体系.体系;
                    dept.本部 = dept.部门体系.本部;
                }
            }
            return(dept);
        }
        public override string ToString()
        {
            DeptInfo dept = DeptInfo.Get(可查部门编号);

            if (dept != null)
            {
                return(dept.部门名称);
            }
            else
            {
                if (可查部门编号 == "所有部门")
                {
                    return("所有部门");
                }
                else
                {
                    return("");
                }
            }
        }
Exemple #12
0
        /// <summary>
        /// 分解
        /// </summary>
        public void Resolve()
        {
            公司 = null;
            部门 = null;
            区域 = null;
            城市 = null;
            省办 = null;

            车间 = null;
            工厂 = null;
            班  = null;
            组  = null;

            DeptInfo deptInfo = this;

            while (deptInfo != null)
            {
                switch (deptInfo.部门层级)
                {
                case 15:
                    公司 = deptInfo;
                    break;

                case 20:
                    部门 = deptInfo;
                    break;

                case 25:
                    车间 = deptInfo;
                    break;

                case 30:
                    班 = deptInfo;
                    break;

                case 35:
                    组 = deptInfo;
                    break;

                case 40:
                    省办 = deptInfo;
                    break;

                case 45:
                    区域 = deptInfo;
                    break;

                case 50:
                    城市 = deptInfo;
                    break;

                case 60:
                    工厂 = deptInfo;
                    break;
                }
                deptInfo = DeptInfo.组织机构表.Find(org => org.部门编号 == deptInfo.级编号);
            }

            if (部门 == null)
            {
                if (省办 != null)
                {
                    部门 = 省办;
                }
                if (工厂 != null)
                {
                    部门 = 工厂;
                }
            }
        }
Exemple #13
0
        //根据日历组获取所有工资项
        public static List <SalResult> GetList(string calRunId, string payGroup)
        {
            List <SalResult> list = new List <SalResult>();

            CalRunInfo calRun = CalRunInfo.Get(calRunId);

            if (calRun == null)
            {
                return(list);
            }

            OleDbConnection conn = new OleDbConnection(MyHelper.GetPsConnectionString());

            using (conn)
            {
                OleDbDataReader rs = null;
                try
                {
                    conn.Open();
                    using (OleDbCommand cmd = conn.CreateCommand())
                    {
                        string payGroupCondition = "";
                        if (string.IsNullOrEmpty(payGroup) == false)
                        {
                            payGroupCondition = String.Format(" AND GP_PAYGROUP = '{0}'", payGroup);
                        }
                        cmd.CommandText = String.Format("SELECT B.NAME,A.* FROM SYSADM.PS_C_WA_PAY_RSLT A LEFT JOIN PS_PERSONAL_DATA B ON A.EMPLID=B.EMPLID WHERE CAL_RUN_ID='{0}' {1} ORDER BY A.EMPLID", calRunId, payGroupCondition);
                        rs = cmd.ExecuteReader();
                        while (rs.Read())
                        {
                            SalResult item = new SalResult();

                            #region 日历信息

                            item.日历组 = calRunId;
                            item.期间  = calRun.期间;
                            item.年度  = calRun.年度;
                            item.月份  = calRun.月份;

                            #endregion

                            #region 员工信息

                            item.姓名   = MyHelper.RemoveNumber((string)rs["NAME"]);
                            item.员工编号 = (string)rs["EMPLID"];
                            item.员工类型 = (string)rs["C_CHR027"];

                            EmpInfo empInfo = EmpInfo.员工表.Find(a => a.员工编号 == item.员工编号);
                            if (empInfo != null)
                            {
                                item.身份证号 = empInfo.身份证号;

                                item.财务公司   = empInfo.财务公司;
                                item.财务部门   = empInfo.财务部门;
                                item.财务部门序号 = empInfo.财务部门序号;
                                item.员工序号   = empInfo.员工序号;

                                item.银行账号 = empInfo.银行账号;
                                item.帐户名称 = empInfo.帐户名称;
                            }

                            #endregion

                            #region 所属机构

                            item.公司编号 = (string)rs["COMPANY"];
                            item.机构编号 = (string)rs["DEPTID"];

                            CompanyInfo company = CompanyInfo.Get(item.公司编号);
                            if (company != null)
                            {
                                item.公司名称 = company.公司名称;
                            }

                            DeptInfo dept = DeptInfo.Get(item.机构编号);
                            if (dept != null && dept.所在部门 != null)
                            {
                                item.部门编号 = dept.所在部门.部门编号;
                                item.部门名称 = dept.所在部门.部门名称;
                            }

                            #endregion

                            #region 薪酬体系

                            item.薪资组    = (string)rs["GP_PAYGROUP"];
                            item.薪资集合   = (string)rs["SETID_SALARY"];
                            item.薪酬体系编号 = (string)rs["SAL_ADMIN_PLAN"];
                            item.薪等编号   = (string)rs["GRADE"];
                            item.薪级编号   = Convert.ToString(rs["STEP"]);

                            #endregion

                            #region 职务数据

                            item.职务代码 = (string)rs["JOBCODE"];
                            //2018-9-10 职务等级以15号为界
                            //item.职务等级 = (string)rs["SUPV_LVL_ID"];
                            item.职务等级 = GetSupvLvlId(item.员工编号, item.年度, item.月份);

                            item.职位编号 = (string)rs["POSITION_NBR"];
                            item.班别   = (string)rs["SHIFT"];

                            #endregion

                            #region 出勤情况

                            item.企业排班天数     = Convert.ToDecimal(rs["C_AMT202"]);
                            item.法定工作日天数    = Convert.ToDecimal(rs["C_AMT243"]);
                            item.实际出勤天数     = Convert.ToDecimal(rs["C_AMT198"]);
                            item.法定工作日出勤天数  = Convert.ToDecimal(rs["C_AMT199"]);
                            item.法定节假日出勤天数  = Convert.ToDecimal(rs["C_AMT201"]);
                            item.休息日出勤天数    = Convert.ToDecimal(rs["C_AMT203"]);
                            item.月综合出勤天数    = Convert.ToDecimal(rs["C_AMT204"]);
                            item.工作日延长出勤小时数 = Convert.ToDecimal(rs["C_AMT205"]);

                            #endregion

                            #region 出勤工资

                            item.法定工作日出勤工资   = Convert.ToDecimal(rs["C_AMT005"]);
                            item.法定节假日出勤工资   = Convert.ToDecimal(rs["C_AMT006"]);
                            item.休息日出勤工资     = Convert.ToDecimal(rs["C_AMT007"]);
                            item.月综合出勤工资     = Convert.ToDecimal(rs["C_AMT009"]);
                            item.工作日延长工作出勤工资 = Convert.ToDecimal(rs["C_AMT010"]);

                            #endregion

                            item.未休年休假工资 = Convert.ToDecimal(rs["C_AMT134"]);

                            #region 社保缴纳

                            item.养老保险个人缴纳金额  = Convert.ToDecimal(rs["C_AMT170"]);
                            item.医疗保险个人缴纳金额  = Convert.ToDecimal(rs["C_AMT171"]);
                            item.失业保险个人缴纳金额  = Convert.ToDecimal(rs["C_AMT172"]);
                            item.住房公积金个人缴纳金额 = Convert.ToDecimal(rs["C_AMT173"]);
                            item.大病医疗个人缴纳金额  = Convert.ToDecimal(rs["C_AMT292"]);
                            //社保合计
                            item.社保个人缴纳金额 = Convert.ToDecimal(rs["C_AMT258"]);
                            item.社保公司缴纳金额 = Convert.ToDecimal(rs["C_AMT259"]);
                            //补缴 2015.9.14
                            item.养老保险个人补缴金额  = Convert.ToDecimal(rs["C_AMT174"]);
                            item.医疗保险个人补缴金额  = Convert.ToDecimal(rs["C_AMT175"]);
                            item.失业保险个人补缴金额  = Convert.ToDecimal(rs["C_AMT176"]);
                            item.住房公积金个人补缴金额 = Convert.ToDecimal(rs["C_AMT177"]);

                            #endregion

                            item.个人所得税金额 = Convert.ToDecimal(rs["C_AMT178"]); //C_AMT265 总的个税(含封闭工资)
                            item.代垫费用    = Convert.ToDecimal(rs["C_AMT262"]);

                            item.挂钩效益工资      = Convert.ToDecimal(rs["C_AMT136"]);
                            item.其他所得        = Convert.ToDecimal(rs["C_AMT138"]);
                            item.其他扣款        = Convert.ToDecimal(rs["C_AMT196"]);
                            item.预留风险金       = Convert.ToDecimal(rs["C_AMT241"]);
                            item.出勤工资        = Convert.ToDecimal(rs["C_AMT252"]);
                            item.实得满勤奖       = Convert.ToDecimal(rs["C_AMT017"]);
                            item.应得满勤奖       = Convert.ToDecimal(rs["C_AMT232"]);
                            item.表工资         = Convert.ToDecimal(rs["C_AMT002"]);
                            item.设定工资        = Convert.ToDecimal(rs["C_AMT003"]);
                            item.基准工资        = Convert.ToDecimal(rs["C_AMT004"]);
                            item.特殊社保的基准工资   = Convert.ToDecimal(rs["C_AMT278"]);
                            item.基数等级与基准工资差额 = Convert.ToDecimal(rs["C_AMT011"]);
                            //item.工资降级 = Convert.ToDecimal(rs["C_AMT008"]) - item.上表工资; //2015.5.20 封闭上表工资 - 上表工资
                            //2017.7.10 直接读取工资降级数据
                            item.工资降级 = PsHelper.GetPayDegrade(item.员工编号, calRun.开始日期);
                            if (item.工资降级 < 0)
                            {
                                item.工资降级 = 0;                //2015.9.24
                            }
                            #region 累加器

                            item.出勤工资   = Convert.ToDecimal(rs["C_AMT252"]);
                            item.津贴补助   = Convert.ToDecimal(rs["C_AMT253"]);
                            item.综合考核工资 = Convert.ToDecimal(rs["C_AMT254"]);
                            item.奖项     = Convert.ToDecimal(rs["C_AMT255"]);
                            item.扣项     = Convert.ToDecimal(rs["C_AMT256"]);

                            #endregion

                            item.交通餐饮补助 = Convert.ToDecimal(rs["C_AMT248"]);

                            item.应税工资额 = Convert.ToDecimal(rs["C_AMT260"]);
                            //含年休假工资(260是不含年休假的工资总额)
                            //即:合计应税工资额 = 应税工资额 + 年休假工资
                            item.合计应税工资额 = Convert.ToDecimal(rs["C_AMT261"]);
                            item.表工资总额   = Convert.ToDecimal(rs["C_AMT257"]);
                            item.实发工资总额  = Convert.ToDecimal(rs["C_AMT263"]);
                            list.Add(item);
                        }
                    }
                }
                finally
                {
                    if (rs != null)
                    {
                        rs.Close();
                    }
                    conn.Close();
                }
            }
            return(list);
        }