| | |
| | | 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) |
| | |
| | | _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() |
| | | { |
| | |
| | | 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) |
| | | { |
| | |
| | | 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) |
| | | { |
| | |
| | | } |
| | | |
| | | 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); |
| | | |
| | |
| | | } |
| | | |
| | | 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); |
| | | |
| | |
| | | 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"; |