| | |
| | | private readonly IDtChannelArticleNewsService _dtChannelArticleNewsService; |
| | | private readonly IConfiguration _configuration; |
| | | private readonly IHttpClientFactory _clientFactory; |
| | | private readonly IAskService _askService; |
| | | private readonly IAdmEvaluateService _admEvaluateService; |
| | | private readonly IExpertService _expertService; |
| | | private readonly zhengcaioaContext _context; |
| | | private readonly zcUserInfoN_dbContext _zcUsercontext; |
| | | |
| | | private readonly decimal jiabangongzibiaozhun = new decimal(21.5); |
| | | public TimedBackgroundService(ILogger<TimedBackgroundService> logger, IServiceScopeFactory factory) |
| | |
| | | _dtChannelArticleNewsService = factory.CreateScope().ServiceProvider.GetRequiredService<IDtChannelArticleNewsService>(); |
| | | _configuration = factory.CreateScope().ServiceProvider.GetRequiredService<IConfiguration>(); |
| | | _clientFactory = factory.CreateScope().ServiceProvider.GetRequiredService<IHttpClientFactory>(); |
| | | _askService= factory.CreateScope().ServiceProvider.GetRequiredService<IAskService>(); |
| | | _admEvaluateService = factory.CreateScope().ServiceProvider.GetRequiredService<IAdmEvaluateService>(); |
| | | _expertService = factory.CreateScope().ServiceProvider.GetRequiredService<IExpertService>(); |
| | | _context = factory.CreateScope().ServiceProvider.GetRequiredService<zhengcaioaContext>(); |
| | | _zcUsercontext = factory.CreateScope().ServiceProvider.GetRequiredService<zcUserInfoN_dbContext>(); |
| | | } |
| | | protected override async Task ExecuteAsync(CancellationToken stoppingToken) |
| | | { |
| | |
| | | { |
| | | jisuangonglinggongzi(); |
| | | } |
| | | |
| | | |
| | | _logger.LogInformation("把超过90天还没有转化的档案客户的业务经理归为无"); |
| | | this.ywjlguiling(); |
| | | _logger.LogInformation("把超过90天还没有转化的档案客户的业务经理归为无执行结束"); |
| | | |
| | | _logger.LogInformation("把会员系统和oa系统手机号相同的客户关联起来"); |
| | | this.huiyuanguanlian(); |
| | | _logger.LogInformation("把会员系统和oa系统手机号相同的客户关联起来执行结束"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | return diwutian; |
| | | } |
| | | |
| | | |
| | | //把超过90天还没有转化的档案客户的业务经理归为无 |
| | | public void ywjlguiling() |
| | | { |
| | | var intentionCustomerDTOs = _intentionCustomerService.GetList().Where(x=>x.Ywjltime < DateTime.Now.AddDays(-90)).ToList(); |
| | | |
| | | foreach(var intentionCustomerDTO in intentionCustomerDTOs) |
| | | { |
| | | intentionCustomerDTO.Ywjl = null; |
| | | intentionCustomerDTO.Ywjltime = null; |
| | | _intentionCustomerService.save(intentionCustomerDTO); |
| | | } |
| | | } |
| | | |
| | | |
| | | //把会员系统和oa系统手机号相同的客户关联起来 |
| | | public void huiyuanguanlian() |
| | | { |
| | | var cooperatecustomCustomers = _context.CooperatecustomCustomers.Where(x => x.RecStatus == "A" && x.HuiyuanId == null).ToList(); |
| | | var frameworkUsers = _zcUsercontext.FrameworkUsers.Where(x => x.IsValid == true).ToList(); |
| | | if (cooperatecustomCustomers != null && cooperatecustomCustomers.Count > 0) |
| | | { |
| | | foreach (var cooperatecustomCustomer in cooperatecustomCustomers) |
| | | { |
| | | if (!string.IsNullOrEmpty(cooperatecustomCustomer.Tel)) |
| | | { |
| | | var frameworkUser = frameworkUsers.Where(x => x.Itcode == cooperatecustomCustomer.Tel).FirstOrDefault(); |
| | | if (frameworkUser != null) |
| | | { |
| | | cooperatecustomCustomer.HuiyuanId = frameworkUser.Id.ToString(); |
| | | } |
| | | } |
| | | |
| | | } |
| | | _context.SaveChanges(); |
| | | } |
| | | |
| | | |
| | | |
| | | var intentionCustomers = _context.IntentionCustomers.Where(x => x.RecStatus == "A" && x.HuiyuanId == null).ToList(); |
| | | if (intentionCustomers != null && intentionCustomers.Count > 0) |
| | | { |
| | | foreach (var intentionCustomer in intentionCustomers) |
| | | { |
| | | if (!string.IsNullOrEmpty(intentionCustomer.Tel)) |
| | | { |
| | | var frameworkUser = frameworkUsers.Where(x => x.Itcode == intentionCustomer.Tel).FirstOrDefault(); |
| | | if (frameworkUser != null) |
| | | { |
| | | intentionCustomer.HuiyuanId = frameworkUser.Id.ToString(); |
| | | } |
| | | } |
| | | |
| | | } |
| | | _context.SaveChanges(); |
| | | } |
| | | |
| | | } |
| | | |
| | | //计算考勤 |
| | | public void jisuankaoqin() |
| | | { |
| | |
| | | AdmAttendanceRuleDTO admAttendanceRuleDTO = _attendanceRuleService.Get(""); |
| | | var jiejiari = admAttendanceRulesDtlDTOs.Where(x => x.Name == "jiejiari").ToList(); |
| | | var tiaoxiuri = admAttendanceRulesDtlDTOs.Where(x => x.Name == "tiaoxiuri").ToList(); |
| | | var jiabanri = admAttendanceRulesDtlDTOs.Where(x => x.Name == "jiabanri").ToList(); |
| | | |
| | | //每天的考勤时间点 |
| | | string[] WorkingStart = admAttendanceRuleDTO.WorkingStart.Split('.'); |
| | |
| | | |
| | | ResultEntity resultEntity = new ResultEntity(); |
| | | resultEntity.Result = false; |
| | | |
| | | var Month = DateTime.Now.Month - 1; |
| | | var Year = DateTime.Now.Year; |
| | | if (Month == 0) |
| | | { |
| | | Month = 12; |
| | | Year = Year - 1; |
| | | } |
| | | //查询所有的有效人员 |
| | | List<PltUserDTO> userList = _userService.GetListjisuankaoqin(new DateTime(DateTime.Now.Year, DateTime.Now.Month - 1, 1), new DateTime(DateTime.Now.Year, DateTime.Now.Month - 1, 1).AddMonths(1));//.Where(x => x.UserSn == "yang").ToList(); |
| | | List<PltUserDTO> userList = _userService.GetListjisuankaoqin(new DateTime(Year, Month, 1), new DateTime(Year, Month, 1).AddMonths(1));//.Where(x => x.UserSn == "yang").ToList(); |
| | | for (int a = 0; a < userList.Count; a++) |
| | | { |
| | | _logger.LogInformation("开始计算" + userList[a].UserName + "考勤"); |
| | | //开始计算考勤 |
| | | DateTime dateminkaoqin = new DateTime(DateTime.Now.Year, DateTime.Now.Month - 1, 1); |
| | | DateTime dateminkaoqin = new DateTime(Year, Month, 1); |
| | | DateTime datemaxkaoqin = dateminkaoqin.AddMonths(1); |
| | | List<AdmAskLeaveDTO> admAskLeaveDTOs = _signinService.GetAskLeaveByUserId(userList[a].Id); |
| | | List<AdmAskLeaveOffDTO> admAskLeaveOffDTOs = _signinService.GetAskLeaveOffByUserId(userList[a].Id); |
| | |
| | | admAttendanceDTO.Qingjia = 0; |
| | | admAttendanceDTO.Jiaban = 0; |
| | | admAttendanceDTO.Xiaojia = 0; |
| | | admAttendanceDTO.Daixinjia = 0; |
| | | admAttendanceDTO.Chidao = 0; |
| | | admAttendanceDTO.Zaotui = 0; |
| | | admAttendanceDTO.Kuanggong = 0; |
| | |
| | | decimal Zaotui = 0; |
| | | decimal Kuanggong = 0; |
| | | decimal Xiaojia = 0; |
| | | decimal Daixinjia = 0; |
| | | |
| | | while (dateminkaoqin < datemaxkaoqin) |
| | | { |
| | |
| | | Offdays += 1; |
| | | } |
| | | } |
| | | |
| | | if(userList[a].Outdate.HasValue && dateminkaoqin >=userList[a].Outdate ) |
| | | //离职当天计算考勤 |
| | | if(userList[a].Zhiwustatus == "D" && userList[a].Outdate.HasValue && dateminkaoqin >userList[a].Outdate ) |
| | | { |
| | | dateminkaoqin = dateminkaoqin.AddDays(1); |
| | | continue; |
| | |
| | | admSignInDTO = new AdmSignInDTO(); |
| | | } |
| | | //查询请假 请假时间不能重叠 |
| | | List<AdmAskLeaveDTO> admAskLeaveDTOMin = admAskLeaveDTOs.Where(x =>x.Lavetype != "2" && x.StratTime < dateminkaoqin.AddDays(1) && x.EndTime > dateminkaoqin).OrderByDescending(x=>x.Createtime).ToList(); |
| | | List<AdmAskLeaveDTO> admAskLeaveDTOMin = admAskLeaveDTOs.Where(x => x.Lavetype != "2" && x.StratTime < dateminkaoqin.AddDays(1) && x.EndTime > dateminkaoqin).OrderByDescending(x=>x.Createtime).ToList(); |
| | | //查询销假 销假时间不能重叠 |
| | | List<AdmAskLeaveOffDTO> admAskLeaveOffDTOMin = admAskLeaveOffDTOs.Where(x => x.StratTime < dateminkaoqin.AddDays(1) && x.EndTime > dateminkaoqin).OrderByDescending(x => x.Createtime).ToList(); |
| | | |
| | |
| | | decimal Kuanggongtianshu = 0; |
| | | decimal dangtianqingjia = 0; |
| | | decimal dangtianxiaojia = 0; |
| | | decimal dangtiandaixinjia = 0; |
| | | |
| | | string Iswork = "D"; |
| | | if (iswork) |
| | | { |
| | |
| | | } |
| | | else |
| | | { |
| | | if (dateBiJiaoDTOs[i].StartTime > dateBiJiaoDTOs[i - 1].EndTime) |
| | | { |
| | | kuanggong = true; |
| | | break; |
| | | } |
| | | else if (dateBiJiaoDTOs[i].EndTime > dateBiJiaoDTOs[i - 1].EndTime) |
| | | //if (dateBiJiaoDTOs[i].StartTime > dateBiJiaoDTOs[i - 1].EndTime) |
| | | //{ |
| | | // //kuanggong = true; |
| | | // break; |
| | | //} |
| | | //else |
| | | if (dateBiJiaoDTOs[i].EndTime > dateBiJiaoDTOs[i - 1].EndTime) |
| | | { |
| | | endttime = dateBiJiaoDTOs[i].EndTime; |
| | | } |
| | | if (!starttime.HasValue) |
| | | { |
| | | starttime = dateBiJiaoDTOs[i].StartTime; |
| | | } |
| | | } |
| | | if (endttime >= StratTimeWorkingEnd && starttime.HasValue) |
| | | { |
| | | break; |
| | | } |
| | | } |
| | | if (kuanggong) |
| | |
| | | } |
| | | else |
| | | { |
| | | if (dateBiJiaoDTOs[i].StartTime > dateBiJiaoDTOs[i - 1].EndTime) |
| | | { |
| | | kuanggong = true; |
| | | break; |
| | | } |
| | | else if (dateBiJiaoDTOs[i].EndTime > dateBiJiaoDTOs[i - 1].EndTime) |
| | | //if (dateBiJiaoDTOs[i].StartTime > dateBiJiaoDTOs[i - 1].EndTime) |
| | | //{ |
| | | // //kuanggong = true; |
| | | // break; |
| | | //} |
| | | //else |
| | | if (dateBiJiaoDTOs[i].EndTime > dateBiJiaoDTOs[i - 1].EndTime) |
| | | { |
| | | endttime = dateBiJiaoDTOs[i].EndTime; |
| | | } |
| | | if (!starttime.HasValue) |
| | | { |
| | | starttime = dateBiJiaoDTOs[i].StartTime; |
| | | } |
| | | } |
| | | if (endttime >= StratTimeOffworkEnd && starttime.HasValue) |
| | | { |
| | | break; |
| | | } |
| | | } |
| | | if (kuanggong) |
| | |
| | | //计算当天请假 |
| | | List<DateBiJiaoDTO> qingjias = new List<DateBiJiaoDTO>(); |
| | | |
| | | var feichuqinjia = admAskLeaveDTOMin.Where(x => x.Lavetype != "4").ToList(); |
| | | var feichuqinjia = admAskLeaveDTOMin.Where(x => x.Lavetype != "4" && x.Lavetype != "7" && x.Lavetype != "3" && x.Lavetype != "9").ToList(); |
| | | foreach (var admAskLeave in feichuqinjia) |
| | | { |
| | | |
| | |
| | | } |
| | | |
| | | Qingjia += dangtianqingjia; |
| | | |
| | | |
| | | |
| | | //计算当天带薪假 |
| | | List<DateBiJiaoDTO> daixinjias = new List<DateBiJiaoDTO>(); |
| | | |
| | | var chauxndaixinjias = admAskLeaveDTOMin.Where(x => x.Lavetype == "4" || x.Lavetype == "7" || x.Lavetype == "3" || x.Lavetype == "9").ToList(); |
| | | foreach (var admAskLeave in chauxndaixinjias) |
| | | { |
| | | |
| | | DateBiJiaoDTO dateBiJiaoDTO = new DateBiJiaoDTO(); |
| | | dateBiJiaoDTO.StartTime = admAskLeave.StratTime; |
| | | dateBiJiaoDTO.EndTime = admAskLeave.EndTime; |
| | | daixinjias.Add(dateBiJiaoDTO); |
| | | |
| | | } |
| | | |
| | | foreach (var daixinjia in daixinjias) |
| | | { |
| | | if (daixinjia.StartTime < StratTimeWorkingStart) |
| | | { |
| | | daixinjia.StartTime = StratTimeWorkingStart; |
| | | } |
| | | if (daixinjia.StartTime > StratTimeWorkingEnd && daixinjia.StartTime < StratTimeOffworkStart) |
| | | { |
| | | daixinjia.StartTime = StratTimeOffworkStart; |
| | | } |
| | | |
| | | |
| | | if (daixinjia.EndTime > StratTimeWorkingEnd && daixinjia.EndTime < StratTimeOffworkStart) |
| | | { |
| | | daixinjia.EndTime = StratTimeWorkingEnd; |
| | | } |
| | | |
| | | |
| | | if (daixinjia.EndTime > StratTimeOffworkEnd) |
| | | { |
| | | daixinjia.EndTime = StratTimeOffworkEnd; |
| | | } |
| | | TimeSpan daixinjiashiijan = daixinjia.EndTime.Value.Subtract(daixinjia.StartTime.Value); |
| | | if (daixinjia.StartTime <= StratTimeWorkingEnd && daixinjia.EndTime >= StratTimeOffworkStart) |
| | | { |
| | | TimeSpan wuxiushijian = StratTimeOffworkStart.Subtract(StratTimeWorkingEnd); |
| | | dangtiandaixinjia += Math.Round(((decimal)(daixinjiashiijan.Hours * 60 + daixinjiashiijan.Minutes - wuxiushijian.Hours * 60 - wuxiushijian.Minutes)) / ((decimal)shangbanshijian), 2); |
| | | } |
| | | else |
| | | { |
| | | dangtiandaixinjia += Math.Round(((decimal)(daixinjiashiijan.Hours * 60 + daixinjiashiijan.Minutes)) / ((decimal)shangbanshijian), 2); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | Daixinjia += dangtiandaixinjia; |
| | | |
| | | |
| | | //计算当天出勤天数 |
| | | Shijichuqin += (1 - Kuanggongtianshu - dangtianqingjia); |
| | | |
| | |
| | | //计算加班时间 |
| | | if (admSignInDTO != null && admSignInDTO.OvertimeIn.HasValue && admSignInDTO.OvertimeOut.HasValue) |
| | | { |
| | | DateTime overdate = admSignInDTO.OvertimeIn.Value; |
| | | if (admSignInDTO.OvertimeIn.Value< StratTimeOffworkEnd) |
| | | var admAskovertimeDTO = _askService.GetAskovertimeByUeridAndjiabantime(userList[a].Id, dateminkaoqin); |
| | | if(admAskovertimeDTO!=null&& !string.IsNullOrEmpty(admAskovertimeDTO.Id)) |
| | | { |
| | | overdate = StratTimeOffworkEnd; |
| | | DateTime overdate = admSignInDTO.OvertimeIn.Value; |
| | | if (admSignInDTO.OvertimeIn.Value < StratTimeOffworkEnd) |
| | | { |
| | | overdate = StratTimeOffworkEnd; |
| | | } |
| | | TimeSpan jiaban = admSignInDTO.OvertimeOut.Value.Subtract(overdate); |
| | | decimal jiabanshijian = jiaban.Hours; |
| | | if(new decimal(jiaban.Hours) > admAskovertimeDTO.Overtime.Value) |
| | | { |
| | | jiabanshijian = admAskovertimeDTO.Overtime.Value; |
| | | } |
| | | if (jiabanshijian > new decimal(shangbanshijian) / 60) |
| | | { |
| | | jiabanshijian = new decimal(shangbanshijian) /60; |
| | | } |
| | | Jiaban += Math.Round(jiabanshijian * 60 / shangbanshijian, 2); |
| | | } |
| | | TimeSpan jiaban = admSignInDTO.OvertimeOut.Value.Subtract(overdate); |
| | | |
| | | Jiaban += Math.Round((decimal)(jiaban.Hours * 60) / (decimal)shangbanshijian, 2); |
| | | |
| | | |
| | | |
| | | } |
| | | } |
| | | else |
| | | { |
| | | |
| | | //判断考勤时间的连续性 |
| | | |
| | | //判断早上是否迟到,判断早上是否早退,早退矿工处理 |
| | | DateTime? starttime = null; |
| | | DateTime? endttime = null; |
| | | bool kuanggong = false; |
| | | List<DateBiJiaoDTO> dateBiJiaoDTOs = new List<DateBiJiaoDTO>(); |
| | | if (admSignInDTO != null && admSignInDTO.MorningIn.HasValue && admSignInDTO.MorningOut.HasValue) |
| | | //判断今天是否公司要求加班 |
| | | var shifoujiaban = jiabanri.Exists(x => x.ValueStart <= dateminkaoqin && x.ValueEnd >= dateminkaoqin); |
| | | if (shifoujiaban) |
| | | { |
| | | DateBiJiaoDTO dateBiJiaoDTO = new DateBiJiaoDTO(); |
| | | dateBiJiaoDTO.StartTime = admSignInDTO.MorningIn; |
| | | dateBiJiaoDTO.EndTime = admSignInDTO.MorningOut; |
| | | dateBiJiaoDTOs.Add(dateBiJiaoDTO); |
| | | } |
| | | var jiabanbuka = admAskLeaveOffDTOMin.Where(x => x.Lavetype == "3").ToList(); |
| | | foreach (var admAskLeaveOff in jiabanbuka) |
| | | { |
| | | if (admAskLeaveOff.StratTime < StratTimeWorkingEnd) |
| | | |
| | | //判断考勤时间的连续性 |
| | | |
| | | //判断早上是否迟到,判断早上是否早退,早退矿工处理 |
| | | DateTime? starttime = null; |
| | | DateTime? endttime = null; |
| | | bool kuanggong = false; |
| | | List<DateBiJiaoDTO> dateBiJiaoDTOs = new List<DateBiJiaoDTO>(); |
| | | if (admSignInDTO != null && admSignInDTO.MorningIn.HasValue && admSignInDTO.MorningOut.HasValue) |
| | | { |
| | | DateBiJiaoDTO dateBiJiaoDTO = new DateBiJiaoDTO(); |
| | | dateBiJiaoDTO.StartTime = admAskLeaveOff.StratTime; |
| | | dateBiJiaoDTO.EndTime = admAskLeaveOff.EndTime; |
| | | dateBiJiaoDTO.StartTime = admSignInDTO.MorningIn; |
| | | dateBiJiaoDTO.EndTime = admSignInDTO.MorningOut; |
| | | dateBiJiaoDTOs.Add(dateBiJiaoDTO); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | dateBiJiaoDTOs = dateBiJiaoDTOs.OrderBy(x => x.StartTime).ToList(); |
| | | if (dateBiJiaoDTOs.Count == 0) |
| | | { |
| | | Kuanggongtianshu += new decimal(0.5); |
| | | } |
| | | else |
| | | { |
| | | //判断上午考勤时间是否全覆盖 |
| | | for (int i = 0; i < dateBiJiaoDTOs.Count; i++) |
| | | foreach (var admAskLeave in admAskLeaveDTOMin) |
| | | { |
| | | if (i == 0) |
| | | if (admAskLeave.StratTime < StratTimeWorkingEnd) |
| | | { |
| | | starttime = dateBiJiaoDTOs[i].StartTime; |
| | | endttime = dateBiJiaoDTOs[i].EndTime; |
| | | DateBiJiaoDTO dateBiJiaoDTO = new DateBiJiaoDTO(); |
| | | dateBiJiaoDTO.StartTime = admAskLeave.StratTime; |
| | | dateBiJiaoDTO.EndTime = admAskLeave.EndTime; |
| | | dateBiJiaoDTOs.Add(dateBiJiaoDTO); |
| | | } |
| | | else |
| | | { |
| | | if (dateBiJiaoDTOs[i].StartTime > dateBiJiaoDTOs[i - 1].EndTime) |
| | | { |
| | | kuanggong = true; |
| | | break; |
| | | } |
| | | else if (dateBiJiaoDTOs[i].EndTime > dateBiJiaoDTOs[i - 1].EndTime) |
| | | { |
| | | endttime = dateBiJiaoDTOs[i].EndTime; |
| | | } |
| | | } |
| | | |
| | | } |
| | | if (kuanggong) |
| | | |
| | | foreach (var admAskLeaveOff in admAskLeaveOffDTOMin) |
| | | { |
| | | if (admAskLeaveOff.StratTime < StratTimeWorkingEnd) |
| | | { |
| | | DateBiJiaoDTO dateBiJiaoDTO = new DateBiJiaoDTO(); |
| | | dateBiJiaoDTO.StartTime = admAskLeaveOff.StratTime; |
| | | dateBiJiaoDTO.EndTime = admAskLeaveOff.EndTime; |
| | | dateBiJiaoDTOs.Add(dateBiJiaoDTO); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | dateBiJiaoDTOs = dateBiJiaoDTOs.OrderBy(x => x.StartTime).ToList(); |
| | | if (dateBiJiaoDTOs.Count == 0) |
| | | { |
| | | Kuanggong += new decimal(0.5); |
| | | Kuanggongtianshu += new decimal(0.5); |
| | | } |
| | | else |
| | | { |
| | | decimal shangwukuanggong = 0; |
| | | if (starttime > StratTimeWorkingStart) |
| | | //判断上午考勤时间是否全覆盖 |
| | | for (int i = 0; i < dateBiJiaoDTOs.Count; i++) |
| | | { |
| | | TimeSpan chidao = starttime.Value.Subtract(StratTimeWorkingStart); |
| | | if (chidao.Days > 0 || (chidao.Hours * 60 + chidao.Minutes) > admAttendanceRuleDTO.Absenteeism) |
| | | if (i == 0) |
| | | { |
| | | if (shangwukuanggong == 0) |
| | | { |
| | | Kuanggongtianshu += new decimal(0.5); |
| | | } |
| | | |
| | | starttime = dateBiJiaoDTOs[i].StartTime; |
| | | endttime = dateBiJiaoDTOs[i].EndTime; |
| | | } |
| | | else |
| | | { |
| | | Chidao += 1; |
| | | Shangwuchidaofenzhong = chidao.Hours * 60 + chidao.Minutes; |
| | | } |
| | | } |
| | | if (shangwukuanggong == 0 && endttime < StratTimeWorkingEnd) |
| | | { |
| | | TimeSpan zaotui = StratTimeWorkingEnd.Subtract(endttime.Value); |
| | | if (zaotui.Days > 0 || (zaotui.Hours * 60 + zaotui.Minutes) > admAttendanceRuleDTO.Absenteeism) |
| | | { |
| | | if (shangwukuanggong == 0) |
| | | //if (dateBiJiaoDTOs[i].StartTime > dateBiJiaoDTOs[i - 1].EndTime) |
| | | //{ |
| | | // //kuanggong = true; |
| | | // break; |
| | | //} |
| | | //else |
| | | if (dateBiJiaoDTOs[i].EndTime > dateBiJiaoDTOs[i - 1].EndTime) |
| | | { |
| | | Kuanggongtianshu += new decimal(0.5); |
| | | endttime = dateBiJiaoDTOs[i].EndTime; |
| | | } |
| | | |
| | | if (!starttime.HasValue) |
| | | { |
| | | starttime = dateBiJiaoDTOs[i].StartTime; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | Zaotui += 1; |
| | | Shangwuzaotuifenzhong = zaotui.Hours * 60 + zaotui.Minutes; |
| | | } |
| | | |
| | | } |
| | | Kuanggongtianshu += shangwukuanggong; |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | //判断下午是否迟到,判断下午是否早退,早退矿工处理 |
| | | |
| | | |
| | | starttime = null; |
| | | endttime = null; |
| | | kuanggong = false; |
| | | dateBiJiaoDTOs = new List<DateBiJiaoDTO>(); |
| | | if (admSignInDTO != null && admSignInDTO.AfternoonIn.HasValue && admSignInDTO.AfternoonOut.HasValue) |
| | | { |
| | | DateBiJiaoDTO dateBiJiaoDTO = new DateBiJiaoDTO(); |
| | | dateBiJiaoDTO.StartTime = admSignInDTO.AfternoonIn; |
| | | dateBiJiaoDTO.EndTime = admSignInDTO.AfternoonOut; |
| | | dateBiJiaoDTOs.Add(dateBiJiaoDTO); |
| | | } |
| | | var jiabanbukaxiawu = admAskLeaveOffDTOMin.Where(x => x.Lavetype == "3").ToList(); |
| | | foreach (var admAskLeaveOff in jiabanbukaxiawu) |
| | | { |
| | | if (admAskLeaveOff.EndTime > StratTimeOffworkStart) |
| | | { |
| | | DateBiJiaoDTO dateBiJiaoDTO = new DateBiJiaoDTO(); |
| | | dateBiJiaoDTO.StartTime = admAskLeaveOff.StratTime; |
| | | dateBiJiaoDTO.EndTime = admAskLeaveOff.EndTime; |
| | | dateBiJiaoDTOs.Add(dateBiJiaoDTO); |
| | | } |
| | | |
| | | } |
| | | |
| | | dateBiJiaoDTOs = dateBiJiaoDTOs.OrderBy(x => x.StartTime).ToList(); |
| | | if (dateBiJiaoDTOs.Count == 0) |
| | | { |
| | | //Kuanggong += new decimal(0.5); |
| | | Kuanggongtianshu += new decimal(0.5); |
| | | } |
| | | else |
| | | { |
| | | //判断上午考勤时间是否全覆盖 |
| | | for (int i = 0; i < dateBiJiaoDTOs.Count; i++) |
| | | { |
| | | if (i == 0) |
| | | if (kuanggong) |
| | | { |
| | | starttime = dateBiJiaoDTOs[i].StartTime; |
| | | endttime = dateBiJiaoDTOs[i].EndTime; |
| | | Kuanggong += new decimal(0.5); |
| | | Kuanggongtianshu += new decimal(0.5); |
| | | } |
| | | else |
| | | { |
| | | if (dateBiJiaoDTOs[i].StartTime > dateBiJiaoDTOs[i - 1].EndTime) |
| | | decimal shangwukuanggong = 0; |
| | | if (starttime > StratTimeWorkingStart) |
| | | { |
| | | kuanggong = true; |
| | | break; |
| | | TimeSpan chidao = starttime.Value.Subtract(StratTimeWorkingStart); |
| | | if (chidao.Days > 0 || (chidao.Hours * 60 + chidao.Minutes) > admAttendanceRuleDTO.Absenteeism) |
| | | { |
| | | if (shangwukuanggong == 0) |
| | | { |
| | | shangwukuanggong += new decimal(0.5); |
| | | Kuanggong += new decimal(0.5); |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | Chidao += 1; |
| | | Shangwuchidaofenzhong = chidao.Hours * 60 + chidao.Minutes; |
| | | } |
| | | } |
| | | else if (dateBiJiaoDTOs[i].EndTime > dateBiJiaoDTOs[i - 1].EndTime) |
| | | if (shangwukuanggong == 0 && endttime < StratTimeWorkingEnd) |
| | | { |
| | | endttime = dateBiJiaoDTOs[i].EndTime; |
| | | TimeSpan zaotui = StratTimeWorkingEnd.Subtract(endttime.Value); |
| | | if (zaotui.Days > 0 || (zaotui.Hours * 60 + zaotui.Minutes) > admAttendanceRuleDTO.Absenteeism) |
| | | { |
| | | if (shangwukuanggong == 0) |
| | | { |
| | | shangwukuanggong += new decimal(0.5); |
| | | Kuanggong += new decimal(0.5); |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | Zaotui += 1; |
| | | Shangwuzaotuifenzhong = zaotui.Hours * 60 + zaotui.Minutes; |
| | | } |
| | | |
| | | } |
| | | Kuanggongtianshu += shangwukuanggong; |
| | | } |
| | | } |
| | | if (kuanggong) |
| | | |
| | | |
| | | |
| | | //判断下午是否迟到,判断下午是否早退,早退矿工处理 |
| | | |
| | | |
| | | starttime = null; |
| | | endttime = null; |
| | | kuanggong = false; |
| | | dateBiJiaoDTOs = new List<DateBiJiaoDTO>(); |
| | | if (admSignInDTO != null && admSignInDTO.AfternoonIn.HasValue && admSignInDTO.AfternoonOut.HasValue) |
| | | { |
| | | //Kuanggong += new decimal(0.5); |
| | | DateBiJiaoDTO dateBiJiaoDTO = new DateBiJiaoDTO(); |
| | | dateBiJiaoDTO.StartTime = admSignInDTO.AfternoonIn; |
| | | dateBiJiaoDTO.EndTime = admSignInDTO.AfternoonOut; |
| | | dateBiJiaoDTOs.Add(dateBiJiaoDTO); |
| | | } |
| | | foreach (var admAskLeave in admAskLeaveDTOMin) |
| | | { |
| | | if (admAskLeave.EndTime > StratTimeOffworkStart) |
| | | { |
| | | DateBiJiaoDTO dateBiJiaoDTO = new DateBiJiaoDTO(); |
| | | dateBiJiaoDTO.StartTime = admAskLeave.StratTime; |
| | | dateBiJiaoDTO.EndTime = admAskLeave.EndTime; |
| | | dateBiJiaoDTOs.Add(dateBiJiaoDTO); |
| | | } |
| | | |
| | | } |
| | | foreach (var admAskLeaveOff in admAskLeaveOffDTOMin) |
| | | { |
| | | if (admAskLeaveOff.EndTime > StratTimeOffworkStart) |
| | | { |
| | | DateBiJiaoDTO dateBiJiaoDTO = new DateBiJiaoDTO(); |
| | | dateBiJiaoDTO.StartTime = admAskLeaveOff.StratTime; |
| | | dateBiJiaoDTO.EndTime = admAskLeaveOff.EndTime; |
| | | dateBiJiaoDTOs.Add(dateBiJiaoDTO); |
| | | } |
| | | |
| | | } |
| | | |
| | | dateBiJiaoDTOs = dateBiJiaoDTOs.OrderBy(x => x.StartTime).ToList(); |
| | | if (dateBiJiaoDTOs.Count == 0) |
| | | { |
| | | Kuanggong += new decimal(0.5); |
| | | Kuanggongtianshu += new decimal(0.5); |
| | | } |
| | | else |
| | | { |
| | | decimal xiawuwukuanggong = 0; |
| | | if (starttime > StratTimeOffworkStart) |
| | | //判断上午考勤时间是否全覆盖 |
| | | for (int i = 0; i < dateBiJiaoDTOs.Count; i++) |
| | | { |
| | | TimeSpan chidao = starttime.Value.Subtract(StratTimeOffworkStart); |
| | | if (chidao.Days > 0 || (chidao.Hours * 60 + chidao.Minutes) > admAttendanceRuleDTO.Absenteeism) |
| | | if (i == 0) |
| | | { |
| | | if (xiawuwukuanggong == 0) |
| | | { |
| | | xiawuwukuanggong += new decimal(0.5); |
| | | //Kuanggong += new decimal(0.5); |
| | | } |
| | | |
| | | starttime = dateBiJiaoDTOs[i].StartTime; |
| | | endttime = dateBiJiaoDTOs[i].EndTime; |
| | | } |
| | | else |
| | | { |
| | | Chidao += 1; |
| | | Xiawuchidaofenzhong = chidao.Hours * 60 + chidao.Minutes; |
| | | //if (dateBiJiaoDTOs[i].StartTime > dateBiJiaoDTOs[i - 1].EndTime) |
| | | //{ |
| | | // //kuanggong = true; |
| | | // break; |
| | | //} |
| | | //else |
| | | if (dateBiJiaoDTOs[i].EndTime > dateBiJiaoDTOs[i - 1].EndTime) |
| | | { |
| | | endttime = dateBiJiaoDTOs[i].EndTime; |
| | | } |
| | | if (!starttime.HasValue) |
| | | { |
| | | starttime = dateBiJiaoDTOs[i].StartTime; |
| | | } |
| | | } |
| | | } |
| | | if (xiawuwukuanggong == 0 && endttime < StratTimeOffworkEnd) |
| | | if (kuanggong) |
| | | { |
| | | TimeSpan zaotui = StratTimeOffworkEnd.Subtract(endttime.Value); |
| | | if (zaotui.Days > 0 || (zaotui.Hours * 60 + zaotui.Minutes) > admAttendanceRuleDTO.Absenteeism) |
| | | Kuanggong += new decimal(0.5); |
| | | Kuanggongtianshu += new decimal(0.5); |
| | | } |
| | | else |
| | | { |
| | | decimal xiawuwukuanggong = 0; |
| | | if (starttime > StratTimeOffworkStart) |
| | | { |
| | | if (xiawuwukuanggong == 0) |
| | | TimeSpan chidao = starttime.Value.Subtract(StratTimeOffworkStart); |
| | | if (chidao.Days > 0 || (chidao.Hours * 60 + chidao.Minutes) > admAttendanceRuleDTO.Absenteeism) |
| | | { |
| | | xiawuwukuanggong += new decimal(0.5); |
| | | //Kuanggong += new decimal(0.5); |
| | | if (xiawuwukuanggong == 0) |
| | | { |
| | | xiawuwukuanggong += new decimal(0.5); |
| | | Kuanggong += new decimal(0.5); |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | Chidao += 1; |
| | | Xiawuchidaofenzhong = chidao.Hours * 60 + chidao.Minutes; |
| | | } |
| | | } |
| | | if (xiawuwukuanggong == 0 && endttime < StratTimeOffworkEnd) |
| | | { |
| | | TimeSpan zaotui = StratTimeOffworkEnd.Subtract(endttime.Value); |
| | | if (zaotui.Days > 0 || (zaotui.Hours * 60 + zaotui.Minutes) > admAttendanceRuleDTO.Absenteeism) |
| | | { |
| | | if (xiawuwukuanggong == 0) |
| | | { |
| | | xiawuwukuanggong += new decimal(0.5); |
| | | Kuanggong += new decimal(0.5); |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | Zaotui += 1; |
| | | Xiawuzaotuifenzhong = zaotui.Hours * 60 + zaotui.Minutes; |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | Zaotui += 1; |
| | | Xiawuzaotuifenzhong = zaotui.Hours * 60 + zaotui.Minutes; |
| | | } |
| | | |
| | | Kuanggongtianshu += xiawuwukuanggong; |
| | | } |
| | | Kuanggongtianshu += xiawuwukuanggong; |
| | | } |
| | | |
| | | |
| | | //计算当天请假 |
| | | List<DateBiJiaoDTO> qingjias = new List<DateBiJiaoDTO>(); |
| | | |
| | | var feichuqinjia = admAskLeaveDTOMin.Where(x => x.Lavetype != "4" && x.Lavetype != "7" && x.Lavetype != "3" && x.Lavetype != "9").ToList(); |
| | | foreach (var admAskLeave in feichuqinjia) |
| | | { |
| | | |
| | | DateBiJiaoDTO dateBiJiaoDTO = new DateBiJiaoDTO(); |
| | | dateBiJiaoDTO.StartTime = admAskLeave.StratTime; |
| | | dateBiJiaoDTO.EndTime = admAskLeave.EndTime; |
| | | qingjias.Add(dateBiJiaoDTO); |
| | | |
| | | } |
| | | |
| | | var feichuqinxiaojia = admAskLeaveOffDTOMin.Where(x => x.Lavetype == "2").ToList(); |
| | | foreach (var admAskLeaveOff in feichuqinxiaojia) |
| | | { |
| | | |
| | | DateBiJiaoDTO dateBiJiaoDTO = new DateBiJiaoDTO(); |
| | | dateBiJiaoDTO.StartTime = admAskLeaveOff.StratTime; |
| | | dateBiJiaoDTO.EndTime = admAskLeaveOff.EndTime; |
| | | qingjias.Add(dateBiJiaoDTO); |
| | | |
| | | } |
| | | |
| | | |
| | | foreach (var qingjia in qingjias) |
| | | { |
| | | if (qingjia.StartTime < StratTimeWorkingStart) |
| | | { |
| | | qingjia.StartTime = StratTimeWorkingStart; |
| | | } |
| | | if (qingjia.StartTime > StratTimeWorkingEnd && qingjia.StartTime < StratTimeOffworkStart) |
| | | { |
| | | qingjia.StartTime = StratTimeOffworkStart; |
| | | } |
| | | |
| | | |
| | | if (qingjia.EndTime > StratTimeWorkingEnd && qingjia.EndTime < StratTimeOffworkStart) |
| | | { |
| | | qingjia.EndTime = StratTimeWorkingEnd; |
| | | } |
| | | |
| | | |
| | | if (qingjia.EndTime > StratTimeOffworkEnd) |
| | | { |
| | | qingjia.EndTime = StratTimeOffworkEnd; |
| | | } |
| | | TimeSpan qingjiashiijan = qingjia.EndTime.Value.Subtract(qingjia.StartTime.Value); |
| | | if (qingjia.StartTime <= StratTimeWorkingEnd && qingjia.EndTime >= StratTimeOffworkStart) |
| | | { |
| | | TimeSpan wuxiushijian = StratTimeOffworkStart.Subtract(StratTimeWorkingEnd); |
| | | dangtianqingjia += Math.Round(((decimal)(qingjiashiijan.Hours * 60 + qingjiashiijan.Minutes - wuxiushijian.Hours * 60 - wuxiushijian.Minutes)) / ((decimal)shangbanshijian), 2); |
| | | } |
| | | else |
| | | { |
| | | dangtianqingjia += Math.Round(((decimal)(qingjiashiijan.Hours * 60 + qingjiashiijan.Minutes)) / ((decimal)shangbanshijian), 2); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | Qingjia += dangtianqingjia; |
| | | |
| | | |
| | | |
| | | //计算当天带薪假 |
| | | List<DateBiJiaoDTO> daixinjias = new List<DateBiJiaoDTO>(); |
| | | |
| | | var chauxndaixinjias = admAskLeaveDTOMin.Where(x => x.Lavetype == "4" || x.Lavetype == "7" || x.Lavetype == "3" || x.Lavetype == "9").ToList(); |
| | | foreach (var admAskLeave in chauxndaixinjias) |
| | | { |
| | | |
| | | DateBiJiaoDTO dateBiJiaoDTO = new DateBiJiaoDTO(); |
| | | dateBiJiaoDTO.StartTime = admAskLeave.StratTime; |
| | | dateBiJiaoDTO.EndTime = admAskLeave.EndTime; |
| | | daixinjias.Add(dateBiJiaoDTO); |
| | | |
| | | } |
| | | |
| | | foreach (var daixinjia in daixinjias) |
| | | { |
| | | if (daixinjia.StartTime < StratTimeWorkingStart) |
| | | { |
| | | daixinjia.StartTime = StratTimeWorkingStart; |
| | | } |
| | | if (daixinjia.StartTime > StratTimeWorkingEnd && daixinjia.StartTime < StratTimeOffworkStart) |
| | | { |
| | | daixinjia.StartTime = StratTimeOffworkStart; |
| | | } |
| | | |
| | | |
| | | if (daixinjia.EndTime > StratTimeWorkingEnd && daixinjia.EndTime < StratTimeOffworkStart) |
| | | { |
| | | daixinjia.EndTime = StratTimeWorkingEnd; |
| | | } |
| | | |
| | | |
| | | if (daixinjia.EndTime > StratTimeOffworkEnd) |
| | | { |
| | | daixinjia.EndTime = StratTimeOffworkEnd; |
| | | } |
| | | TimeSpan daixinjiashiijan = daixinjia.EndTime.Value.Subtract(daixinjia.StartTime.Value); |
| | | if (daixinjia.StartTime <= StratTimeWorkingEnd && daixinjia.EndTime >= StratTimeOffworkStart) |
| | | { |
| | | TimeSpan wuxiushijian = StratTimeOffworkStart.Subtract(StratTimeWorkingEnd); |
| | | dangtiandaixinjia += Math.Round(((decimal)(daixinjiashiijan.Hours * 60 + daixinjiashiijan.Minutes - wuxiushijian.Hours * 60 - wuxiushijian.Minutes)) / ((decimal)shangbanshijian), 2); |
| | | } |
| | | else |
| | | { |
| | | dangtiandaixinjia += Math.Round(((decimal)(daixinjiashiijan.Hours * 60 + daixinjiashiijan.Minutes)) / ((decimal)shangbanshijian), 2); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | Daixinjia += dangtiandaixinjia; |
| | | |
| | | |
| | | |
| | | //计算当天出勤天数 |
| | | Jiaban += (1 - Kuanggongtianshu - dangtianqingjia); |
| | | |
| | | |
| | | //计算销假(出差,补卡) |
| | | List<DateBiJiaoDTO> xiaojias = new List<DateBiJiaoDTO>(); |
| | | |
| | | var xiaojiala = admAskLeaveOffDTOMin.Where(x => x.Lavetype != "2").ToList(); |
| | | foreach (var admAskLeaveOff in xiaojiala) |
| | | { |
| | | |
| | | DateBiJiaoDTO dateBiJiaoDTO = new DateBiJiaoDTO(); |
| | | dateBiJiaoDTO.StartTime = admAskLeaveOff.StratTime; |
| | | dateBiJiaoDTO.EndTime = admAskLeaveOff.EndTime; |
| | | xiaojias.Add(dateBiJiaoDTO); |
| | | |
| | | } |
| | | |
| | | foreach (var xiaojia in xiaojias) |
| | | { |
| | | if (xiaojia.StartTime < StratTimeWorkingStart) |
| | | { |
| | | xiaojia.StartTime = StratTimeWorkingStart; |
| | | } |
| | | if (xiaojia.StartTime > StratTimeWorkingEnd && xiaojia.StartTime < StratTimeOffworkStart) |
| | | { |
| | | xiaojia.StartTime = StratTimeOffworkStart; |
| | | } |
| | | |
| | | |
| | | if (xiaojia.EndTime > StratTimeWorkingEnd && xiaojia.EndTime < StratTimeOffworkStart) |
| | | { |
| | | xiaojia.EndTime = StratTimeWorkingEnd; |
| | | } |
| | | |
| | | |
| | | if (xiaojia.EndTime > StratTimeOffworkEnd) |
| | | { |
| | | xiaojia.EndTime = StratTimeOffworkEnd; |
| | | } |
| | | TimeSpan qingjiashiijan = xiaojia.EndTime.Value.Subtract(xiaojia.StartTime.Value); |
| | | if (xiaojia.StartTime <= StratTimeWorkingEnd && xiaojia.EndTime >= StratTimeOffworkStart) |
| | | { |
| | | TimeSpan wuxiushijian = StratTimeOffworkStart.Subtract(StratTimeWorkingEnd); |
| | | dangtianxiaojia += Math.Round(((decimal)(qingjiashiijan.Hours * 60 + qingjiashiijan.Minutes - wuxiushijian.Hours * 60 - wuxiushijian.Minutes)) / ((decimal)shangbanshijian), 2); |
| | | } |
| | | else |
| | | { |
| | | dangtianxiaojia += Math.Round(((decimal)(qingjiashiijan.Hours * 60 + qingjiashiijan.Minutes)) / ((decimal)shangbanshijian), 2); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | Xiaojia += dangtianxiaojia; |
| | | } |
| | | |
| | | |
| | | //计算当天加班天数 |
| | | Jiaban += (1 - Kuanggongtianshu ); |
| | | |
| | | Kuanggongtianshu = 0; |
| | | |
| | | //加班 |
| | | //计算加班时间 |
| | | if (admSignInDTO != null && admSignInDTO.OvertimeIn.HasValue && admSignInDTO.OvertimeOut.HasValue) |
| | | { |
| | | DateTime overdate = admSignInDTO.OvertimeIn.Value; |
| | | if (admSignInDTO.OvertimeIn.Value < StratTimeOffworkEnd) |
| | | var admAskovertimeDTO = _askService.GetAskovertimeByUeridAndjiabantime(userList[a].Id, dateminkaoqin); |
| | | if (admAskovertimeDTO != null && !string.IsNullOrEmpty(admAskovertimeDTO.Id)) |
| | | { |
| | | overdate = StratTimeOffworkEnd; |
| | | //如果当天是公司要求加班,则自己申请的加班从下班开始算 |
| | | DateTime overdate = admSignInDTO.OvertimeIn.Value; |
| | | if (shifoujiaban && admSignInDTO.OvertimeIn.Value < StratTimeOffworkEnd) |
| | | { |
| | | overdate = StratTimeOffworkEnd; |
| | | } |
| | | TimeSpan jiaban = admSignInDTO.OvertimeOut.Value.Subtract(overdate); |
| | | decimal jiabanshijian = jiaban.Hours; |
| | | if (new decimal(jiaban.Hours) > admAskovertimeDTO.Overtime.Value) |
| | | { |
| | | jiabanshijian = admAskovertimeDTO.Overtime.Value; |
| | | } |
| | | if (jiabanshijian > new decimal(shangbanshijian) / 60) |
| | | { |
| | | jiabanshijian = new decimal(shangbanshijian) / 60; |
| | | } |
| | | Jiaban += Math.Round(jiabanshijian * 60 / shangbanshijian, 2); |
| | | } |
| | | TimeSpan jiaban = admSignInDTO.OvertimeOut.Value.Subtract(overdate); |
| | | |
| | | Jiaban += Math.Round((decimal)(jiaban.Hours * 60) / (decimal)shangbanshijian, 2); |
| | | } |
| | | |
| | | |
| | |
| | | admAttendanceDtlDTO.OvertimeOut = admSignInDTO.OvertimeOut; |
| | | admAttendanceDtlDTO.Qingjia = dangtianqingjia; |
| | | admAttendanceDtlDTO.Xiaojia = dangtianxiaojia; |
| | | |
| | | admAttendanceDtlDTO.Daixinjia = dangtiandaixinjia; |
| | | |
| | | |
| | | |
| | |
| | | admAttendanceDtlDTO.OvertimeIn = admSignInDTO.OvertimeIn; |
| | | admAttendanceDtlDTO.OvertimeOut = admSignInDTO.OvertimeOut; |
| | | admAttendanceDtlDTO.Qingjia = dangtianqingjia; |
| | | admAttendanceDtlDTO.Daixinjia = dangtiandaixinjia; |
| | | admAttendanceDtlDTO.Xiaojia = dangtianxiaojia; |
| | | |
| | | |
| | |
| | | |
| | | |
| | | admAttendanceDTO.Qingjia = Qingjia; |
| | | admAttendanceDTO.Daixinjia = Daixinjia; |
| | | admAttendanceDTO.Xiaojia = Xiaojia; |
| | | admAttendanceDTO.Chidao = Chidao; |
| | | admAttendanceDTO.Islock = "A"; |
| | |
| | | //计算工资 |
| | | public async Task jisuangongziAsync() |
| | | { |
| | | var Month = DateTime.Now.Month - 1; |
| | | var Year = DateTime.Now.Year; |
| | | if (Month == 0) |
| | | { |
| | | Month = 12; |
| | | Year = Year - 1; |
| | | } |
| | | //查询所有的有效人员 |
| | | DateTime dateminkaoqin = new DateTime(DateTime.Now.Year, DateTime.Now.Month - 1, 1); |
| | | DateTime dateminkaoqin = new DateTime(Year, Month, 1); |
| | | DateTime datemaxkaoqin = dateminkaoqin.AddMonths(1); |
| | | List<PltUserDTO> userList = _userService.GetListjisuankaoqin(dateminkaoqin, datemaxkaoqin);//.Where(x => x.UserSn == "yang").ToList(); |
| | | List<HrJibengongziDTO> hrJibengongziDTOs = _JibengongziService.GetList().Where(x=> x.Effecttime < datemaxkaoqin).ToList(); |
| | |
| | | searchEntity.AttendanceId = admAttendanceDTO.Id; |
| | | List<AdmAttendanceDtlDTO> admAttendanceDtlDTOs = _admAttendanceDtlService.GetList(searchEntity).OrderBy(x => x.SgninDate).ToList(); |
| | | |
| | | //查询是否有不称职的工作考评 |
| | | var admEvaluateDTOs = _admEvaluateService.GetListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin).Where(x=>x.EvaluateValue == "03").ToList(); |
| | | //当月出勤率 |
| | | decimal chuqinlv = Math.Round(admAttendanceDTO.Shijichuqin / admAttendanceDTO.Yingchuqin,4); |
| | | |
| | | //查询当前员工职务的基本工资配置 |
| | | |
| | | var hrJibengongzi = hrJibengongziDTOs.Where(x=>x.PostId == userList[i].HrPosition ).OrderByDescending(x=>x.Effecttime).FirstOrDefault(); |
| | | |
| | | |
| | | if (hrJibengongzi == null) |
| | | { |
| | | _logger.LogInformation(userList[i].UserName + ": 职务所属资本工资为空"); |
| | | continue; |
| | | } |
| | | var shebaoDTO = _JibengongziService.GetListShebao().FirstOrDefault(); |
| | | if (shebaoDTO == null) |
| | | { |
| | | _logger.LogInformation(userList[i].UserName + ": 社保维护为空"); |
| | | continue; |
| | | } |
| | | |
| | | hrSalaryDTO.Jibengongzi = Math.Round( hrJibengongzi.Jibengongzi.Value * chuqinlv, 2); |
| | | hrSalaryDTO.Baomifei = Math.Round(hrJibengongzi.Baomifei.Value * chuqinlv, 2); |
| | | //是否在试用期 |
| | |
| | | { |
| | | geshuiqizheng = userList[i].geshuiqizheng.Value; |
| | | } |
| | | var Shebaodanwei = hrJibengongzi.Shebaodanwei.HasValue ? hrJibengongzi.Shebaodanwei.Value : 0; |
| | | var Shebaogeren = hrJibengongzi.Shebaogeren.HasValue ? hrJibengongzi.Shebaogeren.Value : 0; |
| | | var Shebaodanwei = shebaoDTO.Shebaodanwei.HasValue ? shebaoDTO.Shebaodanwei.Value : 0; |
| | | var Shebaogeren = shebaoDTO.Shebaogeren.HasValue ? shebaoDTO.Shebaogeren.Value : 0; |
| | | decimal yingnashuie = 0; |
| | | hrSalaryDTO.Queqin = 0; |
| | | hrSalaryDTO.Fakuan = 0; |
| | | hrSalaryDTO.Gongzuobutie = 0; |
| | | hrSalaryDTO.Jiabangongzi = 0; |
| | | decimal shiyongqichuqintianshu = 0; |
| | | decimal shiyongqichuqinlv = 0; |
| | | |
| | | decimal yingfaheji = 0; |
| | | |
| | | |
| | | decimal BasicPrice = 0; |
| | | if (!decimal.TryParse(userList[i].BasicPrice, out BasicPrice)) |
| | | { |
| | | _logger.LogInformation(userList[i].UserName + ": 员工没有维护工资"); |
| | | continue; |
| | | } |
| | | |
| | | |
| | | |
| | | if (userList[i].ShiyongDate.HasValue && userList[i].ShiyongDateEnd.HasValue && dateminkaoqin>= userList[i].ShiyongDate.Value && dateminkaoqin <= userList[i].ShiyongDateEnd.Value) |
| | | { |
| | | if (!userList[i].ShiyongPrice.HasValue) |
| | |
| | | _logger.LogInformation(userList[i].UserName + ": 员工处于试用期,但是试用期工资为空"); |
| | | continue; |
| | | } |
| | | //查询是否有不称职的工作考评 |
| | | var admEvaluateDTOsshiyongqi = _admEvaluateService.GetListsalary(userList[i].Id, dateminkaoqin, userList[i].ShiyongDateEnd.Value.AddDays(1)).Where(x => x.EvaluateValue == "03").ToList(); |
| | | |
| | | |
| | | //试用期的出勤率 |
| | | shiyongqichuqinlv = chuqinlv; |
| | | if(userList[i].ShiyongDateEnd.Value< datemaxkaoqin.AddDays(-1)) |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | shiyongqichuqinlv = Math.Round(shiyongqichuqintianshu / admAttendanceDTO.Yingchuqin, 4); |
| | | |
| | | //工作评价不合格罚款 |
| | | hrSalaryDTO.Fakuan += Math.Round(userList[i].ShiyongPrice.Value * admEvaluateDTOsshiyongqi.Count / admAttendanceDTO.Yingchuqin + BasicPrice * (admEvaluateDTOs.Count - admEvaluateDTOsshiyongqi.Count) / admAttendanceDTO.Yingchuqin, 2); |
| | | |
| | | } |
| | | else |
| | | { |
| | |
| | | } |
| | | } |
| | | hrSalaryDTO.Jiabangongzi += Math.Round((admAttendanceDTO.Jiaban / jiabangongzibiaozhun) * userList[i].ShiyongPrice.Value, 2); |
| | | |
| | | //工作评价不合格罚款 |
| | | hrSalaryDTO.Fakuan += Math.Round(userList[i].ShiyongPrice.Value * admEvaluateDTOs.Count / admAttendanceDTO.Yingchuqin, 2); |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | hrSalaryDTO.Gongzuobutie += Math.Round( (userList[i].ShiyongPrice.Value - hrJibengongzi.Baomifei.Value- hrJibengongzi.Jibengongzi.Value ) * shiyongqichuqinlv, 2); |
| | | |
| | | |
| | | |
| | | //yingnashuie = userList[i].ShiyongPrice.Value - Shebaogeren - geshuiqizheng; |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | else |
| | | { |
| | | //工作评价罚款 |
| | | hrSalaryDTO.Fakuan += Math.Round(BasicPrice * admEvaluateDTOs.Count/ admAttendanceDTO.Yingchuqin , 2); |
| | | } |
| | | |
| | | |
| | | if(true) |
| | | { |
| | | decimal BasicPrice = 0; |
| | | if(!decimal.TryParse(userList[i].BasicPrice,out BasicPrice)) |
| | | { |
| | | _logger.LogInformation(userList[i].UserName + ": 员工没有维护工资"); |
| | | continue; |
| | | } |
| | | //转正后的出勤率 |
| | | decimal zhuanzhengchuqinlv = chuqinlv- shiyongqichuqinlv; |
| | | if (userList[i].ShiyongDate.HasValue && userList[i].ShiyongDateEnd.HasValue && userList[i].ShiyongDateEnd.Value >= dateminkaoqin && userList[i].ShiyongDateEnd.Value <= datemaxkaoqin.AddDays(-1)) |
| | |
| | | |
| | | |
| | | |
| | | //yingnashuie = BasicPrice - Shebaogeren - geshuiqizheng; |
| | | |
| | | |
| | | |
| | | } |
| | |
| | | hrSalaryDTO.Dianhuafei = SimCost.bill_amount; |
| | | } |
| | | |
| | | if(admAttendanceDTO.Shijichuqin>=admAttendanceDTO.Yingchuqin |
| | | && hrSalaryDTO.Queqin <=0) |
| | | { |
| | | hrSalaryDTO.Quanqinjiang = hrJibengongzi.Quanqingjiang; |
| | | } |
| | | else |
| | | { |
| | | hrSalaryDTO.Quanqinjiang = 0; |
| | | } |
| | | |
| | | |
| | | hrSalaryDTO.Quanqinjiang = hrJibengongzi.Quanqingjiang; |
| | | |
| | | if ("A".Equals(userList[i].Istravelsubsidy)) |
| | | { |
| | | hrSalaryDTO.Jiaotngbutie = hrJibengongzi.Jiaotongbutie; |
| | |
| | | |
| | | |
| | | |
| | | hrSalaryDTO.Fakuan = 0; |
| | | //工作安排罚款 |
| | | List<AdmMemoBookDTO> admMemoBookDTOs = _DailyManageService.GetRemindsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin,"2"); |
| | | if (admMemoBookDTOs.Count > 0) |
| | |
| | | { |
| | | //var feijijiandengji = fiPiecerateDTOs.Where(x => x.Standard == "A"); |
| | | //var jijiandengji = fiPiecerateDTOs.Where(x => x.Standard == "A"); |
| | | |
| | | #region 采购公告录入 |
| | | |
| | | var caigougonggaoDTOsyue = _projectService.GetcaigougonggaoListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin); |
| | | if (caigougonggaoDTOsyue != null && caigougonggaoDTOsyue.Count > 0) |
| | | { |
| | | var jijianidddd = fiPiecerateDTOs.Where(x => x.Project == "采购公告录入").FirstOrDefault(); |
| | | if (jijianidddd != null) |
| | | { |
| | | var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianidddd.Id).OrderByDescending(x => x.Effecttime).FirstOrDefault(); |
| | | if (jixiaotichengfangan != null && jixiaotichengfangan.Ticheng.HasValue && jixiaotichengfangan.Renwu.HasValue) |
| | | { |
| | | if (jixiaotichengfangan.Renwustandard == "01") |
| | | { |
| | | decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value; |
| | | if (jixiaotichengfangan.Tichengstandard == "01") |
| | | { |
| | | decimal youxiaojijian = caigougonggaoDTOsyue.Count - renwujishu; |
| | | if (youxiaojijian > 0) |
| | | { |
| | | hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | else if (jixiaotichengfangan.Renwustandard == "02") |
| | | { |
| | | decimal renwujishu = jixiaotichengfangan.Renwu.Value; |
| | | if (jixiaotichengfangan.Tichengstandard == "01") |
| | | { |
| | | decimal youxiaojijian = caigougonggaoDTOsyue.Count - renwujishu; |
| | | if (youxiaojijian > 0) |
| | | { |
| | | hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | #region 采购项目录入 |
| | | |
| | |
| | | } |
| | | #endregion |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | #region 客户资料录入 |
| | | |
| | | |
| | | var _intentionCustomerDTOs = _intentionCustomerService.GetListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin); |
| | | if (_intentionCustomerDTOs!=null && _intentionCustomerDTOs.Count > 0) |
| | | { |
| | |
| | | |
| | | #endregion |
| | | |
| | | |
| | | |
| | | |
| | | #region 专家录入 |
| | | |
| | | var zhuanjialuruDTOsyue = _expertService.GetListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin); |
| | | if (zhuanjialuruDTOsyue != null && zhuanjialuruDTOsyue.Count > 0) |
| | | { |
| | | var jijianidddd = fiPiecerateDTOs.Where(x => x.Project == "专家录入").FirstOrDefault(); |
| | | if (jijianidddd != null) |
| | | { |
| | | var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianidddd.Id).OrderByDescending(x => x.Effecttime).FirstOrDefault(); |
| | | if (jixiaotichengfangan != null && jixiaotichengfangan.Ticheng.HasValue && jixiaotichengfangan.Renwu.HasValue) |
| | | { |
| | | if (jixiaotichengfangan.Renwustandard == "01") |
| | | { |
| | | decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value; |
| | | if (jixiaotichengfangan.Tichengstandard == "01") |
| | | { |
| | | decimal youxiaojijian = zhuanjialuruDTOsyue.Count - renwujishu; |
| | | if (youxiaojijian > 0) |
| | | { |
| | | hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | else if (jixiaotichengfangan.Renwustandard == "02") |
| | | { |
| | | decimal renwujishu = jixiaotichengfangan.Renwu.Value; |
| | | if (jixiaotichengfangan.Tichengstandard == "01") |
| | | { |
| | | decimal youxiaojijian = zhuanjialuruDTOsyue.Count - renwujishu; |
| | | if (youxiaojijian > 0) |
| | | { |
| | | hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | decimal jiucuo = hrSalaryDTO.Jiucuo.HasValue ? hrSalaryDTO.Jiucuo.Value : 0; |
| | | |
| | | //计算保底年薪 |
| | | if (userList[i].Indate.HasValue && userList[i].miniyearsalary.HasValue) |
| | | if (userList[i].Indate.HasValue && userList[i].miniyearsalary.HasValue && userList[i].miniyearsalary.Value>0) |
| | | { |
| | | DateTime jixinue = userList[i].Indate.Value; |
| | | if (userList[i].Indate.Value.Day != 1) |
| | |
| | | decimal peichang1 = hrSalaryDTO1.Peichang.HasValue ? hrSalaryDTO1.Peichang.Value : 0; |
| | | decimal jiucuo1 = hrSalaryDTO1.Jiucuo.HasValue ? hrSalaryDTO1.Jiucuo.Value : 0; |
| | | |
| | | baodinianxin += jibengongzi1 + baomifei1 + gongzuobutie1 + jiabangongzi1 + shebao1 + quanqinjiang1 + jiaotngbutie1 + jixiaoticheng1 + jiangjin1 + bufagongzi1 + jiucuo1; |
| | | baodinianxin += jibengongzi1 + baomifei1 + gongzuobutie1 + jiabangongzi1 + shebao1 + quanqinjiang1 + jiaotngbutie1 + jixiaoticheng1 + jiangjin1 + bufagongzi1 + jiucuo1+ peichang1; |
| | | } |
| | | } |
| | | baodinianxin += jibengongzi + baomifei + gongzuobutie + jiabangongzi + shebao + quanqinjiang + jiaotngbutie + jixiaoticheng + jiangjin + bufagongzi + jiucuo; |
| | | if(baodinianxin < userList[i].miniyearsalary.Value) |
| | | baodinianxin += jibengongzi + baomifei + gongzuobutie + jiabangongzi + shebao + quanqinjiang + jiaotngbutie + jixiaoticheng + jiangjin + bufagongzi + jiucuo + peichang; |
| | | if (baodinianxin < userList[i].miniyearsalary.Value) |
| | | { |
| | | jiucuo = userList[i].miniyearsalary.Value - baodinianxin; |
| | | } |
| | | } |
| | | } |
| | | |
| | | yingfaheji = jibengongzi + baomifei + gongzuobutie + jiabangongzi + shebao + quanqinjiang + jiaotngbutie + jixiaoticheng + jiangjin + bufagongzi - shebaokou + ((dianhuabutie - dianhuafei) <= 0 ? (dianhuabutie - dianhuafei) : 0) - queqin - fakuan + peichang + jiucuo; |
| | | |
| | | |
| | | hrSalaryDTO.Yufagongzi = userList[i].advancewages; |
| | | |
| | | if (userList[i].advancewages.HasValue && userList[i].advancewages.Value > 0) |
| | | { |
| | | hrSalaryDTO.Yufagongziheji = 0; |
| | | HrSalaryDTO hrSalaryDTOlast = _hrSalaryService.GetListByUser(userList[i].Id, dateminkaoqin.AddMonths(-1).Year, dateminkaoqin.AddMonths(-1).Month); |
| | | if (hrSalaryDTOlast != null && hrSalaryDTOlast.Yufagongziheji.HasValue) |
| | | { |
| | | hrSalaryDTO.Yufagongziheji = hrSalaryDTOlast.Yufagongziheji; |
| | | } |
| | | |
| | | if (hrSalaryDTO.Yufagongziheji > 0) |
| | | { |
| | | if (yingfaheji < (hrSalaryDTO.Yufagongzi+shebao- shebaokou)) |
| | | { |
| | | hrSalaryDTO.Yufagongziheji += (hrSalaryDTO.Yufagongzi + shebao - shebaokou - yingfaheji); |
| | | yingfaheji = (hrSalaryDTO.Yufagongzi.Value + shebao - shebaokou); |
| | | } |
| | | else if (yingfaheji > (hrSalaryDTO.Yufagongzi + shebao - shebaokou)) |
| | | { |
| | | if (hrSalaryDTO.Yufagongziheji >= (yingfaheji - (hrSalaryDTO.Yufagongzi + shebao - shebaokou))) |
| | | { |
| | | hrSalaryDTO.Yufagongziheji += ((hrSalaryDTO.Yufagongzi + shebao - shebaokou) - yingfaheji); |
| | | yingfaheji = (hrSalaryDTO.Yufagongzi.Value + shebao - shebaokou); |
| | | } |
| | | else |
| | | { |
| | | yingfaheji -= hrSalaryDTO.Yufagongziheji.Value; |
| | | hrSalaryDTO.Yufagongziheji = 0; |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | } |
| | | else if (hrSalaryDTO.Yufagongziheji == 0) |
| | | { |
| | | hrSalaryDTO.Yufagongziheji += ((hrSalaryDTO.Yufagongzi + shebao - shebaokou) - yingfaheji); |
| | | if (yingfaheji < (hrSalaryDTO.Yufagongzi + shebao - shebaokou)) |
| | | { |
| | | yingfaheji = (hrSalaryDTO.Yufagongzi.Value + shebao - shebaokou); |
| | | } |
| | | } |
| | | else if (hrSalaryDTO.Yufagongziheji < 0) |
| | | { |
| | | if (yingfaheji < (hrSalaryDTO.Yufagongzi.Value + shebao - shebaokou)) |
| | | { |
| | | if (-hrSalaryDTO.Yufagongziheji >= ((hrSalaryDTO.Yufagongzi.Value + shebao - shebaokou) - yingfaheji)) |
| | | { |
| | | hrSalaryDTO.Yufagongziheji += ((hrSalaryDTO.Yufagongzi.Value + shebao - shebaokou) - yingfaheji); |
| | | yingfaheji = (hrSalaryDTO.Yufagongzi.Value + shebao - shebaokou); |
| | | } |
| | | else |
| | | { |
| | | yingfaheji += hrSalaryDTO.Yufagongziheji.Value; |
| | | hrSalaryDTO.Yufagongziheji = 0; |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | yingnashuie = jibengongzi + baomifei + gongzuobutie + jiabangongzi + shebao + quanqinjiang + jiaotngbutie + jixiaoticheng + jiangjin + bufagongzi - shebaokou + ( (dianhuabutie - dianhuafei)<=0? (dianhuabutie - dianhuafei) : 0) - queqin - fakuan - peichang + jiucuo - geshuiqizheng; |
| | | |
| | | |
| | | |
| | | |
| | | yingnashuie = yingfaheji - geshuiqizheng; |
| | | |
| | | |
| | | hrSalaryDTO.Geshui = 0; |
| | |
| | | decimal yingnashuie3 = 0; |
| | | decimal yingnashuie4 = 0; |
| | | decimal yingnashuie5 = 0; |
| | | if (yingnashuie > 39250) |
| | | decimal yingnashuie6 = 0; |
| | | decimal yingnashuie7 = 0; |
| | | if (yingnashuie > 80000) |
| | | { |
| | | yingnashuie1 = 4750; |
| | | yingnashuie2 = (9250 - 4750); |
| | | yingnashuie3 = (25250 - 9250); |
| | | yingnashuie4 = (39250 - 25250); |
| | | yingnashuie5 = (yingnashuie - 39250); |
| | | yingnashuie1 = 3000; |
| | | yingnashuie2 = (12000 - 3000); |
| | | yingnashuie3 = (25000 - 12000); |
| | | yingnashuie4 = (35000 - 25000); |
| | | yingnashuie5 = (55000 - 35000); |
| | | yingnashuie6 = (80000 - 55000); |
| | | yingnashuie7 = (yingnashuie - 55000); |
| | | } |
| | | else if (yingnashuie > 25250) |
| | | if (yingnashuie > 55000) |
| | | { |
| | | yingnashuie1 = 4750; |
| | | yingnashuie2 = (9250 - 4750); |
| | | yingnashuie3 = (25250 - 9250); |
| | | yingnashuie4 = (yingnashuie - 25250); |
| | | yingnashuie1 = 3000; |
| | | yingnashuie2 = (12000 - 3000); |
| | | yingnashuie3 = (25000 - 12000); |
| | | yingnashuie4 = (35000 - 25000); |
| | | yingnashuie5 = (55000 - 35000); |
| | | yingnashuie6 = (yingnashuie - 55000); |
| | | } |
| | | if (yingnashuie > 35000) |
| | | { |
| | | yingnashuie1 = 3000; |
| | | yingnashuie2 = (12000 - 3000); |
| | | yingnashuie3 = (25000 - 12000); |
| | | yingnashuie4 = (35000 - 25000); |
| | | yingnashuie5 = (yingnashuie - 35000); |
| | | } |
| | | else if (yingnashuie > 25000) |
| | | { |
| | | yingnashuie1 = 3000; |
| | | yingnashuie2 = (12000 - 3000); |
| | | yingnashuie3 = (25000 - 12000); |
| | | yingnashuie4 = (yingnashuie - 25000); |
| | | |
| | | } |
| | | else if (yingnashuie > 9250) |
| | | else if (yingnashuie > 12000) |
| | | { |
| | | yingnashuie1 = 4750; |
| | | yingnashuie2 = (9250 - 4750); |
| | | yingnashuie3 = (yingnashuie - 9250); |
| | | yingnashuie1 = 3000; |
| | | yingnashuie2 = (12000 - 3000); |
| | | yingnashuie3 = (yingnashuie - 12000); |
| | | } |
| | | else if (yingnashuie > 4750) |
| | | else if (yingnashuie > 3000) |
| | | { |
| | | yingnashuie1 = 4750; |
| | | yingnashuie2 = (yingnashuie - 4750); |
| | | yingnashuie1 = 3000; |
| | | yingnashuie2 = (yingnashuie - 3000); |
| | | } |
| | | else |
| | | { |
| | |
| | | } |
| | | if (yingnashuie1 > 0) |
| | | { |
| | | var yingjiao1 = Math.Round(yingnashuie1 * new decimal(0.05) - 0, 2); |
| | | var yingjiao1 = Math.Round(yingnashuie1 * new decimal(0.03) - 0, 2); |
| | | if (yingjiao1 > 0) |
| | | { |
| | | hrSalaryDTO.Geshui += yingjiao1; |
| | |
| | | } |
| | | if (yingnashuie2 > 0) |
| | | { |
| | | var yingjiao2 = Math.Round(yingnashuie2 * new decimal(0.1) - 250, 2); |
| | | var yingjiao2 = Math.Round(yingnashuie2 * new decimal(0.1) - 0, 2); |
| | | if (yingjiao2 > 0) |
| | | { |
| | | hrSalaryDTO.Geshui += yingjiao2; |
| | |
| | | } |
| | | if (yingnashuie3 > 0) |
| | | { |
| | | var yingjiao3 = Math.Round(yingnashuie3 * new decimal(0.2) - 1250, 2); |
| | | var yingjiao3 = Math.Round(yingnashuie3 * new decimal(0.2) - 0, 2); |
| | | if (yingjiao3 > 0) |
| | | { |
| | | hrSalaryDTO.Geshui += yingjiao3; |
| | |
| | | } |
| | | if (yingnashuie4 > 0) |
| | | { |
| | | var yingjiao4 = Math.Round(yingnashuie4 * new decimal(0.3) - 4250, 2); |
| | | var yingjiao4 = Math.Round(yingnashuie4 * new decimal(0.25) - 0, 2); |
| | | if (yingjiao4 > 0) |
| | | { |
| | | hrSalaryDTO.Geshui += yingjiao4; |
| | |
| | | } |
| | | if (yingnashuie5 > 0) |
| | | { |
| | | var yingjiao5 = Math.Round(yingnashuie5 * new decimal(0.35) - 6750, 2); |
| | | var yingjiao5 = Math.Round(yingnashuie5 * new decimal(0.30) - 0, 2); |
| | | if (yingjiao5 > 0) |
| | | { |
| | | hrSalaryDTO.Geshui += yingjiao5; |
| | | } |
| | | } |
| | | |
| | | |
| | | if (yingnashuie6 > 0) |
| | | { |
| | | var yingjiao6 = Math.Round(yingnashuie6 * new decimal(0.35) - 0, 2); |
| | | if (yingjiao6 > 0) |
| | | { |
| | | hrSalaryDTO.Geshui += yingjiao6; |
| | | } |
| | | } |
| | | if (yingnashuie7 > 0) |
| | | { |
| | | var yingjiao7 = Math.Round(yingnashuie7 * new decimal(0.45) - 0, 2); |
| | | if (yingjiao7 > 0) |
| | | { |
| | | hrSalaryDTO.Geshui += yingjiao7; |
| | | } |
| | | } |
| | | |
| | | } |
| | | decimal geshui = hrSalaryDTO.Geshui.HasValue ? hrSalaryDTO.Geshui.Value : 0; |
| | | |
| | | hrSalaryDTO.Daozhanggongzi += jibengongzi + baomifei + gongzuobutie + jiabangongzi + shebao + quanqinjiang + jiaotngbutie + jixiaoticheng + jiangjin + bufagongzi - shebaokou - geshui + ((dianhuabutie - dianhuafei) <= 0 ? (dianhuabutie - dianhuafei) : 0) - queqin - fakuan - peichang + jiucuo; |
| | | |
| | | |
| | | hrSalaryDTO.Daozhanggongzi = yingfaheji - geshui; |
| | | |
| | | |
| | | |
| | | hrSalaryDTO.Yufagongzi = userList[i].advancewages; |
| | | |
| | | if (userList[i].advancewages.HasValue) |
| | | { |
| | | hrSalaryDTO.Yufagongziheji = 0; |
| | | HrSalaryDTO hrSalaryDTOlast = _hrSalaryService.GetListByUser(userList[i].Id, dateminkaoqin.AddMonths(-1).Year, dateminkaoqin.AddMonths(-1).Month); |
| | | if(hrSalaryDTOlast!=null && hrSalaryDTOlast.Yufagongziheji.HasValue) |
| | | { |
| | | hrSalaryDTO.Yufagongziheji = hrSalaryDTOlast.Yufagongziheji; |
| | | } |
| | | |
| | | hrSalaryDTO.Yufagongziheji += (hrSalaryDTO.Daozhanggongzi- hrSalaryDTO.Yufagongzi); |
| | | } |
| | | |
| | | hrSalaryDTO.RecStatus = "A"; |
| | | hrSalaryDTO.Islock = "D"; |
| | | hrSalaryDTO.Creater = "1"; |
| | |
| | | var jiejiari = admAttendanceRulesDtlDTOs.Where(x => x.Name == "jiejiari").ToList(); |
| | | |
| | | var tiaoxiuri = admAttendanceRulesDtlDTOs.Where(x => x.Name == "tiaoxiuri").ToList(); |
| | | |
| | | var jiabanri = admAttendanceRulesDtlDTOs.Where(x => x.Name == "jiabanri").ToList(); |
| | | |
| | | //每天的考勤时间点 |
| | | string[] WorkingStart = admAttendanceRuleDTO.WorkingStart.Split('.'); |
| | |
| | | } |
| | | else |
| | | { |
| | | |
| | | |
| | | //是否调休日 调休日需要上班 |
| | | if (tiaoxiuri.Exists(x => x.ValueStart <= StratTime.Date && x.ValueEnd >= StratTime.Date)) |
| | | if (tiaoxiuri.Exists(x => x.ValueStart <= StratTime.Date && x.ValueEnd >= StratTime.Date) |
| | | || jiabanri.Exists(x => x.ValueStart <= StratTime.Date && x.ValueEnd >= StratTime.Date)) |
| | | { |
| | | if (StratTime <= StratTimeWorkingStart) |
| | | { |
| | |
| | | { |
| | | |
| | | //是否调休日 调休日需要上班 |
| | | if (tiaoxiuri.Exists(x => x.ValueStart <= EndTime.Date && x.ValueEnd >= EndTime.Date)) |
| | | if (tiaoxiuri.Exists(x => x.ValueStart <= EndTime.Date && x.ValueEnd >= EndTime.Date) |
| | | || jiabanri.Exists(x => x.ValueStart <= EndTime.Date && x.ValueEnd >= EndTime.Date)) |
| | | { |
| | | if (EndTime >= EndTimeOffworkEnd) |
| | | { |
| | |
| | | { |
| | | |
| | | //是否调休日 调休日需要上班 |
| | | if (tiaoxiuri.Exists(x => x.ValueStart <= StratTime.Date && x.ValueEnd >= StratTime.Date)) |
| | | if (tiaoxiuri.Exists(x => x.ValueStart <= dateTimenow.Date && x.ValueEnd >= dateTimenow.Date) |
| | | || jiabanri.Exists(x => x.ValueStart <= dateTimenow.Date && x.ValueEnd >= dateTimenow.Date)) |
| | | { |
| | | LavehTime += shangbanshijian; |
| | | } |
| | |
| | | else |
| | | { |
| | | //是否调休日 调休日需要上班 |
| | | if (tiaoxiuri.Exists(x => x.ValueStart <= StratTime.Date && x.ValueEnd >= StratTime.Date)) |
| | | if (tiaoxiuri.Exists(x => x.ValueStart <= StratTime.Date && x.ValueEnd >= StratTime.Date) |
| | | || jiabanri.Exists(x => x.ValueStart <= StratTime.Date && x.ValueEnd >= StratTime.Date)) |
| | | { |
| | | LavehTime -= shangbanshijian; |
| | | } |