Esempio n. 1
0
        /// <summary>
        /// 计算最终的收入
        /// </summary>
        /// <param name="rowSalaryInfo"></param>
        /// <param name="calDetail">输出计算详情</param>
        /// <returns></returns>
        private static double GetFinalyMoney(RowSalaryInfo rowSalaryInfo)
        {
            var tempFinalySalay = 0.0;
            var tempcurrentHour = rowSalaryInfo.CurrentHour;
            var tempTotalHour   = rowSalaryInfo.TotalHour;
            var tempStep        = rowSalaryInfo.Step;

            while (tempcurrentHour != 0)
            {
                //时段对应工资
                var stepHourMoney = rowSalaryInfo.StartMoney + _stepMoney * tempStep;
                var stepHour      = tempTotalHour - (tempStep - 1) * _stepHour;//待计算的最高时段小时总数

                if (tempcurrentHour < stepHour)
                {
                    stepHour = tempcurrentHour;
                }
                tempFinalySalay         += stepHourMoney * stepHour;
                rowSalaryInfo.CalDetail += $"梯度{tempStep}:({rowSalaryInfo.StartMoney.ToString().PadRight(3,'*')} + {(_stepMoney * tempStep).ToString().PadLeft(3,'*')}) x {stepHour.ToString().PadRight(4, '*')} = {stepHourMoney * stepHour}<br/>";
                tempTotalHour           -= stepHour;
                tempcurrentHour         -= stepHour;
                tempStep--;
            }
            return(tempFinalySalay);
        }
Esempio n. 2
0
        /// <summary>
        /// 解析每一行的薪资信息
        /// </summary>
        /// <param name="row"></param>
        /// <returns></returns>
        private static RowSalaryInfo AnalyRow(int row, int currentMonthCol)
        {
            Debug.WriteLine(row);
            var rowSalaryInfo = new RowSalaryInfo();

            rowSalaryInfo.TeacherName = GetCellValue(row, 5);
            if (string.IsNullOrEmpty(rowSalaryInfo.TeacherName))
            {
                rowSalaryInfo.IsSuccess = false;
                return(rowSalaryInfo);
            }
            rowSalaryInfo.ClassName = GetCellValue(row, 3);
            if (string.IsNullOrEmpty(rowSalaryInfo.ClassName))
            {
                rowSalaryInfo.IsSuccess = false;
                return(rowSalaryInfo);
            }
            rowSalaryInfo.StudentName = GetCellValue(row, 2);
            rowSalaryInfo.StartMoney  = GetStartSalary(rowSalaryInfo.ClassName); //获取初始薪水
            if (rowSalaryInfo.StartMoney == 0)                                   //没有拿到起始薪资,证明这个年级是不支持的
            {
                rowSalaryInfo.IsSuccess = false;
                rowSalaryInfo.ErrMsg    = "年级[" + rowSalaryInfo.ClassName + "]暂不支持;";
                return(rowSalaryInfo);
            }
            rowSalaryInfo.Subject = GetCellValue(row, 7);
            var hourlist = GetHourList(row);

            rowSalaryInfo.TotalHour = hourlist.Sum();
            //如果课时记录的数目符合月份数,证明学生一直在上课
            //如果不相等,证明学生已经停课了
            rowSalaryInfo.CurrentHour = string.IsNullOrEmpty(GetCellValue(row, currentMonthCol))? 0: hourlist.LastOrDefault();
            rowSalaryInfo.Step        = (int)Math.Ceiling((double)rowSalaryInfo.TotalHour / _stepHour);
            rowSalaryInfo.FinalSalay  = GetFinalyMoney(rowSalaryInfo);
            return(rowSalaryInfo);
        }