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); }
/// <summary> /// 获取所有下属部门 /// </summary> /// <returns></returns> public List <DeptInfo> GetDescendants() { DeptInfo parent = this.Parent; List <DeptInfo> list = new List <DeptInfo>(); GetDescendants(this, ref list); return(list); }
//检查指定的部门是否是子孙 public bool IsDescendant(DeptInfo dept) { if (dept == null) { return(false); } return(dept.IsAncestor(部门编号)); }
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); }
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); } }
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); }
/// <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); }
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.公司简称; } } }
//获取值列表 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); }
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(""); } } }
/// <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) { 部门 = 工厂; } } }
//根据日历组获取所有工资项 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); }