private void initData()
        {
            this.dtTime.CustomFormat = " ";

            if (GlobalInfo.loginUser.UserType == GlobalInfo.ADMIN)
            {
                empList        = empDao.FindAll();
                cboEmp.Enabled = true;
            }
            else if (GlobalInfo.loginUser.UserType == GlobalInfo.DEPT_MGR)
            {
                empList        = empDao.FindByDeptId(GlobalInfo.loginEmp.DeptId);
                cboEmp.Enabled = true;
            }
            else
            {
                empList = new List <HREmployee>();
                empList.Add(GlobalInfo.loginEmp);
                cboEmp.Enabled       = false;
                cboEmp.SelectedIndex = 0;
            }

            cboEmp.DataSource = empList;


            HRPayroll vo = new HRPayroll();

            vo.EmpId = GlobalInfo.loginEmp.Id;
            list     = dao.FindByWhere(vo);

            var bindingList = new BindingList <HRPayroll>(list);

            listSource      = new BindingSource(bindingList, null);
            grid.DataSource = listSource;
        }
        private void btnCreate_Click(object sender, EventArgs e)
        {
            int cYear = DateTime.Now.Year;
            int cMonth = DateTime.Now.Month;
            if(dtTime.Value.Year > cYear)
            {
                MessageBoxEx.Show(this, string.Format("日期选择错误,不能超过:{0}年",cYear));
                return;
            }

            if(dtTime.Value.Month  >= cMonth)
            {
                MessageBoxEx.Show(this, string.Format("日期选择错误,生成的日期必须是{0}月份之前的", cMonth));
                return;
            }

            if(dao.FindByDateInterval(dtTime.Value.Year, dtTime.Value.Month).Count > 0)
            {
                MessageBoxEx.Show(this, string.Format("{0}年{1}月的工资单已经生成过了", dtTime.Value.Year, dtTime.Value.Month));
                return;
            }

            string startDate = string.Format("{0}-{1}-01", dtTime.Value.Year, dtTime.Value.Month);
            string endDate = string.Format("{0}-{1}-31", dtTime.Value.Year, dtTime.Value.Month);
            // 请假
            List<HRLeave> leaveList = leaveDao.FindByInterval(startDate, endDate);
            Dictionary<string, HRPayroll> hashMap = CalcLeaveDay(leaveList);

            // 合同
            List<HRContract> contractList = contractDao.FindByDate(endDate);

            list = new List<HRPayroll>();
            int index = 1;
            foreach (var contractVo in contractList)
            {
                HRPayroll vo = new HRPayroll();
                vo.Id = UidUtils.GGuidPrefix(index);
                vo.EmpId = contractVo.EmpId;
                vo.EmpName = contractVo.EmpName;
                vo.PayrollDate = dtTime.Text;
                vo.LeaveDay = hashMap.ContainsKey(contractVo.EmpId) ? hashMap[contractVo.EmpId].LeaveDay : 0;
                vo.SickLeaveDay = hashMap.ContainsKey(contractVo.EmpId) ? hashMap[contractVo.EmpId].SickLeaveDay : 0;
                // 是否在试用期(1:是,0:否)
                vo.ProbationStatus = JudgeIsProbationStatus(contractVo);
                vo.RealSalary = CalcSalary(contractVo.Salary, vo);
                list.Add(vo);

                index++;
            }

            var bindingList = new BindingList<HRPayroll>(list);
            listSource = new BindingSource(bindingList, null);
            grid.DataSource = null;
            grid.DataSource = listSource;

            if(list != null && list.Count > 0)
            {
                btnCommit.Enabled = true;
            }
        }
        private Dictionary<string, HRPayroll> CalcLeaveDay(List<HRLeave> leaveList)
        {
            Dictionary<string, HRPayroll> hashMap = new Dictionary<string, HRPayroll>();
            foreach (HRLeave leaveVo in leaveList)
            {
                HRPayroll vo = null;
                if (hashMap.ContainsKey(leaveVo.EmpId))
                {
                    vo = hashMap[leaveVo.EmpId];
                }
                else
                {
                    vo = new HRPayroll();
                    hashMap[leaveVo.EmpId] = vo;
                }
                // vo.LeaveDay += leaveVo.Type
                // 请假类型(1:年假,2:病假,3:婚假,4:产假,5:事假)
                if(leaveVo.Type == 2)
                {
                    vo.SickLeaveDay += leaveVo.LeaveDay;
                }
                else if(leaveVo.Type == 5)
                {
                    vo.LeaveDay += leaveVo.LeaveDay;
                }
            }

            return hashMap;
        }
示例#4
0
 /// <summary>
 /// 更新
 /// </summary>
 /// <returns></returns>
 public int Update(HRPayroll vo)
 {
     return(conn.Execute(@"update HR_Payroll SET NAME=@Name WHERE id = @Id",
                         new
     {
         Id = vo.Id
     }));
 }
        /// <summary>
        /// 输入转VO
        /// </summary>
        /// <returns></returns>
        private HRPayroll InputToVo()
        {
            HRPayroll vo = new HRPayroll();

            vo.EmpId       = !EmptyUtils.EmptyObj(cboEmp.SelectedValue) ? cboEmp.SelectedValue.ToString() : "";
            vo.PayrollDate = dtTime.Text;
            return(vo);
        }
        /// <summary>
        /// 计算逻辑:
        /// 1. 试用期工资80%
        /// 2. 按30天工作日计算,病假每天工资扣除20%,事假扣除100%
        /// </summary>
        /// <param name="salary"></param>
        /// <param name="vo"></param>
        /// <returns></returns>
        private float CalcSalary(float salary, HRPayroll vo)
        {
            if(vo.ProbationStatus == 1)
            {
                salary = (float)(salary * 0.8);
            }
            float daySalary = salary / 30;

            float ret = daySalary * (30 - vo.SickLeaveDay - vo.LeaveDay);
            ret += (float)(daySalary * vo.SickLeaveDay * 0.8);
            return ret;
        }
示例#7
0
        // 新增
        public int Add(HRPayroll vo)
        {
            int ret = conn.Execute(@"insert HR_Payroll(ID,EMP_ID,PAYROLL_DATE,PROBATION_STATUS,SICK_LEAVE_DAY,LEAVE_DAY,REAL_SALARY) values (@Id,@EmpId, @PayrollDate,@ProbationStatus,@SickLeaveDay,@LeaveDay,@RealSalary)",
                                   new[] { new { Id              = vo.Id,
                                                 EmpId           = vo.EmpId,
                                                 PayrollDate     = vo.PayrollDate,
                                                 ProbationStatus = vo.ProbationStatus,
                                                 SickLeaveDay    = vo.SickLeaveDay,
                                                 LeaveDay        = vo.LeaveDay,
                                                 RealSalary      = vo.RealSalary } });

            Console.WriteLine(string.Format("插入数据库成功{0}", ret));

            return(ret);
        }
示例#8
0
        /// <summary>
        /// 根据工资单日期区间查询
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public List <HRPayroll> FindByWhere(HRPayroll vo)
        {
            string whereSql = "";

            if (!EmptyUtils.EmptyStr(vo.PayrollDate))
            {
                whereSql += " and PAYROLL_DATE=@PayrollDate";
            }
            if (!EmptyUtils.EmptyStr(vo.EmpId))
            {
                whereSql += " and EMP_ID=@EmpId";
            }

            string           baseSql = "select p.*, e.NAME as EMP_NAME from HR_PAYROLL p, HR_EMPLOYEE e where p.EMP_ID = e.ID ";
            List <HRPayroll> list    = conn.Query <HRPayroll>(baseSql + whereSql, new
            {
                PayrollDate = vo.PayrollDate,
                EmpId       = vo.EmpId
            }).ToList();

            return(list);
        }