Example #1
0
        /// <summary>
        /// 审批工资
        /// </summary>
        /// <param name="gatherID"></param>
        /// <param name="bPass"></param>
        /// <param name="strHumanName"></param>
        /// <returns>真为审批通过,假为未审核不能审批</returns>
        public bool Checkup(long gatherID, bool bPass, string strHumanName)
        {
            var oData = new PayOffDB();

            if (oData.IsAssess(gatherID) == false)
            {
                return(false);
            }
            oData.Checkup(gatherID, bPass, strHumanName);
            return(true);
        }
Example #2
0
        /// <summary>
        /// 查询指定年月,工资发放名称的全部员工工资(包括未审批的)
        /// </summary>
        /// <param name="iYear">年</param>
        /// <param name="iMonth">月</param>
        /// <param name="strPayoffName">工资发放名称</param>
        /// <returns></returns>
        public System.Data.DataSet GetPayAudit(int iYear, int iMonth, string strPayoffName)
        {
            try
            {
                System.Data.DataSet dtsResult     = new PayOffDB().QueryPayAudit(iYear, iMonth, strPayoffName);
                DataSet             dtsDataSource = new DataSet();
                dtsDataSource.Tables.Add(new DataTable());
                PayRollItem[] oPayRollItems = new PayOffLogic().GetPayRollItems();
                //生成全部工资项列
                dtsDataSource.Tables[0].Columns.Add("员工姓名");
                foreach (PayRollItem item in oPayRollItems)
                {
                    dtsDataSource.Tables[0].Columns.Add(new DataColumn(item.Name));
                }
                dtsDataSource.Tables[0].Columns.Add("实际所得");
                dtsDataSource.Tables[0].Columns.Add("id");
                dtsDataSource.Tables[0].Columns.Add("审核状态");
                dtsDataSource.Tables[0].Columns.Add("审批状态");


                var result = (from DataRow row in dtsResult.Tables[0].Rows
                              group row by row["cHumanName"] into Humans
                              join DataRow row in dtsResult.Tables[0].Rows on Humans.Key.ToString() equals row["cHumanName"].ToString() into RollItems
                              select new
                {
                    ID = Humans.First()["id"],
                    HumanName = Humans.Key,
                    Rows = from DataRow row in RollItems
                           from System.Data.DataColumn col in dtsResult.Tables[0].Columns
                           where col.ColumnName != "cHumanName" && col.ColumnName != "realInCome"
                           select new
                    {
                        ColName = row["cPayRollName"],                       // 列名称
                        ColValue = row["realInCome"]                         // 列值
                    },
                    RealyInCome = (from DataRow row in RollItems
                                   from System.Data.DataColumn col in dtsResult.Tables[0].Columns
                                   where col.ColumnName == "realInCome" && row["cPayRollName"].ToString() == "实际所得"
                                   select row[col]).First()
                    , AssessState = Humans.First()["AssessState"]
                    ,
                    checkupState = Humans.First()["checkupState"]
                });

                int iCount = 0;

                foreach (var item in result)
                {
                    dtsDataSource.Tables[0].Rows.Add(new string[dtsResult.Tables[0].Columns.Count]);
                    dtsDataSource.Tables[0].Rows[iCount]["员工姓名"] = item.HumanName;
                    foreach (DataColumn column in dtsDataSource.Tables[0].Columns)
                    {
                        var rollItem = item.Rows.Where(p => p.ColName.ToString() == column.ColumnName).FirstOrDefault();
                        if (rollItem != null)
                        {
                            dtsDataSource.Tables[0].Rows[iCount][column.ColumnName] = rollItem.ColValue;
                        }
                    }
                    dtsDataSource.Tables[0].Rows[iCount]["id"]   = item.ID;
                    dtsDataSource.Tables[0].Rows[iCount]["审核状态"] = item.AssessState;
                    dtsDataSource.Tables[0].Rows[iCount]["审批状态"] = item.checkupState;
                    iCount++;
                }
                return(dtsDataSource);
            }
            catch (System.Data.SqlClient.SqlException)
            {
                return(null);
            }
        }
Example #3
0
        /*
         * 方法名称:GetPay
         * 方法功能描述:查询所有员工指定年月的工资
         *
         * 创建人:杨林
         * 创建时间:2009-03-12
         *
         * 修改人:
         * 修改时间:
         * 修改内容:
         *
         */
        /// <summary>
        /// 查询所有员工指定年月的工资
        /// </summary>
        /// <param name="iYear">年</param>
        /// <param name="iMonth">月</param>
        /// <returns>数据集</returns>
        public System.Data.DataSet GetPay(int iYear, int iMonth, string strPayoffName)
        {
            try
            {
                System.Data.DataSet dtsResult     = new PayOffDB().QueryPay(iYear, iMonth, strPayoffName);
                DataSet             dtsDataSource = new DataSet();
                dtsDataSource.Tables.Add(new DataTable());
                PayRollItem[] oPayRollItems = new PayOffLogic().GetPayRollItems();
                //生成全部工资项列
                dtsDataSource.Tables[0].Columns.Add("员工姓名");
                foreach (PayRollItem item in oPayRollItems)
                {
                    dtsDataSource.Tables[0].Columns.Add(new DataColumn(item.Name));
                }
                dtsDataSource.Tables[0].Columns.Add("实际所得");

                var result = (from DataRow row in dtsResult.Tables[0].Rows
                              group row by row["cHumanName"] into Humans // 获取全部人员工资列表,按照人员名称进行分组,因为结果集中单个人员对应多个工资项;
                                                                         // 将分组结果连接结果集中的所有行数据,条件为人员名称相同的记录,结果存储在变量RollItems中.
                              join DataRow row in dtsResult.Tables[0].Rows on Humans.Key.ToString() equals row["cHumanName"].ToString() into RollItems
                                                                         // 映射投影,建立一个匿名对象,三个属性分别为[人员名称],[该人员的工资项集合{工资项名称,工资项值}],[实际所得].
                              select new
                {
                    HumanName = Humans.Key,
                    // 工资项匿名对象集合,用来表示每个员工的工资项.
                    // 联合前面分组后的结果集与数据列.获取全部工资项.但从原始结果集中去掉了[人员名称]原始数据列.
                    Rows = from DataRow row in RollItems
                           from System.Data.DataColumn col in dtsResult.Tables[0].Columns
                           where col.ColumnName != "cHumanName" && col.ColumnName != "realInCome"
                           select new
                    {
                        ColName = row["cPayRollName"],                       // 列名称
                        ColValue = row["realInCome"]                         // 列值
                    },
                    RealyInCome = (from DataRow row in RollItems
                                   from System.Data.DataColumn col in dtsResult.Tables[0].Columns
                                   where col.ColumnName == "realInCome" && row["cPayRollName"].ToString() == "实际所得"
                                   select row[col]).First()               //该员工实际所得,去掉重项.
                });

                int iCount = 0;
                //循环人员工资
                foreach (var item in result)
                {
                    //设置数据源DataSet列数
                    dtsDataSource.Tables[0].Rows.Add(new string[dtsResult.Tables[0].Columns.Count]);
                    //设置员工姓名
                    dtsDataSource.Tables[0].Rows[iCount]["员工姓名"] = item.HumanName;
                    //循环配置人员的列与数据源的列,将值付给数据源Dataset
                    foreach (DataColumn column in dtsDataSource.Tables[0].Columns)
                    {
                        var rollItem = item.Rows.Where(p => p.ColName.ToString() == column.ColumnName).FirstOrDefault();
                        //如果人员的列与数据源的列匹配
                        if (rollItem != null)
                        {
                            dtsDataSource.Tables[0].Rows[iCount][column.ColumnName] = rollItem.ColValue;
                        }
                    }
                    iCount++;
                }
                return(dtsDataSource);

                #region 原数据结构
                //黎明	    基本工资	    2777.00	3226.7798
                //黎明	    项目奖金	    1000.00	3226.7798
                //黎明	    养老保险	    181.296	3226.7798
                //黎明	    医疗保险	    45.324	3226.7798
                //黎明	    失业保险	    22.662	3226.7798
                //黎明	    医疗大额保险	0.00	3226.7798
                //黎明	    住房公积金	181.296	3226.7798
                //黎明	    扣税	        109.64	3226.7798
                //黎明	    考勤	        10.00	3226.7798
                //夏阳明	    基本工资	    2700.00	2446.76
                //夏阳明	    项目奖金	    100.00	2446.76
                //夏阳明	    养老保险	    134.40	2446.76
                //夏阳明	    医疗保险	    33.60	2446.76
                //夏阳明	    失业保险	    16.80	2446.76
                //夏阳明	    医疗大额保险	0.00	2446.76
                //夏阳明	    住房公积金	134.40	2446.76
                //夏阳明	    扣税	        24.04	2446.76
                //夏阳明	    考勤	        10.00	2446.76

                // 循环每人员工资行,item变量代表每个员工的工资记录行.
                // 匿名对象结构图
                //{
                //    HumanNmae = "",
                //    Rows = {
                //            ColName = "", //值类似为"cPayRollName"或者"mPayRollValue"
                //            ColValue=""   //值类似为"养老保险"或者"189.00"
                //            },
                //    RealyInCome = ""
                //}


                //var result = (from DataRow row in dtsResult.Tables[0].Rows
                //              group row by row["cHumanName"] into Humans // 获取全部人员工资列表,按照人员名称进行分组,因为结果集中单个人员对应多个工资项;
                //              // 将分组集果连接结果集中的所有行数据,条件为人员名称相同的记录,结果存储在变量ABC中.
                //              join DataRow row in dtsResult.Tables[0].Rows on Humans.Key.ToString() equals row["cHumanName"].ToString() into ABC
                //              // 映射投影,建立一个匿名对象,三个属性分别为[人员名称],[该人员的工资项集合{工资项名称,工资项值}],[实际所得].
                //              select new
                //              {
                //                  HumanName = Humans.Key,
                //                  // 工资项匿名对象集合,用来表示每个员工的工资项.
                //                  // 联合前面分组后的结果集与数据列.获取全部工资项.但从原始结果集中去掉了[人员名称]与[实际所得]原始数据列.
                //                  Rows = from DataRow row in ABC
                //                         from System.Data.DataColumn col in dtsResult.Tables[0].Columns
                //                         where col.ColumnName != "cHumanName" && col.ColumnName != "realInCome"
                //                         select new
                //                         {
                //                             ColName = col.ColumnName,  // 列名称
                //                             ColValue = row[col]        // 列值
                //                         },
                //                  RealyInCome = (from DataRow row in ABC
                //                                 from System.Data.DataColumn col in dtsResult.Tables[0].Columns
                //                                 where col.ColumnName == "realInCome"
                //                                 select row[col]).First() //该员工实际所得,去掉重项.
                //              });//.Distinct();//仅返回结果集中的非重复人员.

                //dtsDataSource.Tables[0].Columns.Add("员工姓名");
                //dtsDataSource.Tables[0].Columns.Add("实际所得");
                //foreach (var item in result)
                //{
                //    // 如果数据源表没有列,则产生列名.
                //    //if (dtsDataSource.Tables[0].Columns.Count == 0)
                //    //{

                //        var oColumns = item.Rows.Where(Lambda => Lambda.ColName == "cPayRollName");
                //        var temp = (from DataColumn t in dtsDataSource.Tables[0].Columns
                //                    select t).ToList();
                //        foreach (var col in oColumns)
                //        {
                //            if(temp.Where(p=>p.ColumnName == col.ColValue.ToString()).Count() ==0)
                //            {
                //                dtsDataSource.Tables[0].Columns.Add(new DataColumn(col.ColValue.ToString()));
                //            }
                //        }

                //    //}
                //    // 确定列数,好添充列值
                //    string[] strValues = new string[dtsDataSource.Tables[0].Columns.Count];
                //    strValues[0] = item.HumanName.ToString();
                //    strValues[1] = item.RealyInCome.ToString();
                //    // 从该员工的工资项集中获取工资项的金额对象数组
                //    var colValues = item.Rows.Where(lambda => lambda.ColName == "mPayRollValue").ToList();
                //    // 将工资项金额添充到数组中
                //    for (int i = 2, j = 0; i < strValues.Length; i++, j++)
                //    {
                //        strValues[i] = colValues[j].ColValue.ToString();
                //    }

                //    dtsDataSource.Tables[0].Rows.Add(strValues);
                //}
                //return dtsDataSource;
                #endregion
            }
            catch (System.Data.SqlClient.SqlException)
            {
                return(null);
            }
        }