From efad4f05e52c89f3b42774e313144abd039370e4 Mon Sep 17 00:00:00 2001 From: username@email.com <yzy2002yzy@163.com> Date: 星期五, 10 二月 2023 11:26:06 +0800 Subject: [PATCH] 考勤怎么加带薪假的计算 --- zhengcaioa/zhengcaioa/Timer/TimedBackgroundService.cs | 188 +++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 181 insertions(+), 7 deletions(-) diff --git a/zhengcaioa/zhengcaioa/Timer/TimedBackgroundService.cs b/zhengcaioa/zhengcaioa/Timer/TimedBackgroundService.cs index 7430db2..d200c1b 100644 --- a/zhengcaioa/zhengcaioa/Timer/TimedBackgroundService.cs +++ b/zhengcaioa/zhengcaioa/Timer/TimedBackgroundService.cs @@ -51,6 +51,8 @@ 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) @@ -85,6 +87,8 @@ _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) { @@ -104,11 +108,6 @@ try { - _logger.LogInformation("鎶婅秴杩�90澶╄繕娌℃湁杞寲鐨勬。妗堝鎴风殑涓氬姟缁忕悊褰掍负鏃�"); - this.ywjlguiling(); - - _logger.LogInformation("鎶婅秴杩�90澶╄繕娌℃湁杞寲鐨勬。妗堝鎴风殑涓氬姟缁忕悊褰掍负鏃犳墽琛岀粨鏉�"); - _logger.LogInformation("鍒ゆ柇鏄惁鏄浜斾釜宸ヤ綔鏃ョ粨鏉�"); DateTime diwutian = this.diwugongzuori(); //绗簲涓伐浣滄棩缁撴潫鍚庡紑濮嬭绠� @@ -139,6 +138,15 @@ { jisuangonglinggongzi(); } + + + _logger.LogInformation("鎶婅秴杩�90澶╄繕娌℃湁杞寲鐨勬。妗堝鎴风殑涓氬姟缁忕悊褰掍负鏃�"); + this.ywjlguiling(); + _logger.LogInformation("鎶婅秴杩�90澶╄繕娌℃湁杞寲鐨勬。妗堝鎴风殑涓氬姟缁忕悊褰掍负鏃犳墽琛岀粨鏉�"); + + _logger.LogInformation("鎶婁細鍛樼郴缁熷拰oa绯荤粺鎵嬫満鍙风浉鍚岀殑瀹㈡埛鍏宠仈璧锋潵"); + this.huiyuanguanlian(); + _logger.LogInformation("鎶婁細鍛樼郴缁熷拰oa绯荤粺鎵嬫満鍙风浉鍚岀殑瀹㈡埛鍏宠仈璧锋潵鎵ц缁撴潫"); } catch (Exception ex) { @@ -226,6 +234,51 @@ } } + + //鎶婁細鍛樼郴缁熷拰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() { @@ -288,6 +341,7 @@ admAttendanceDTO.Qingjia = 0; admAttendanceDTO.Jiaban = 0; admAttendanceDTO.Xiaojia = 0; + admAttendanceDTO.Daixinjia = 0; admAttendanceDTO.Chidao = 0; admAttendanceDTO.Zaotui = 0; admAttendanceDTO.Kuanggong = 0; @@ -313,6 +367,7 @@ decimal Zaotui = 0; decimal Kuanggong = 0; decimal Xiaojia = 0; + decimal Daixinjia = 0; while (dateminkaoqin < datemaxkaoqin) { @@ -366,7 +421,7 @@ 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(); @@ -400,6 +455,8 @@ decimal Kuanggongtianshu = 0; decimal dangtianqingjia = 0; decimal dangtianxiaojia = 0; + decimal dangtiandaixinjia = 0; + string Iswork = "D"; if (iswork) { @@ -715,6 +772,63 @@ } 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); @@ -1108,6 +1222,64 @@ } 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); @@ -1219,7 +1391,7 @@ admAttendanceDtlDTO.OvertimeOut = admSignInDTO.OvertimeOut; admAttendanceDtlDTO.Qingjia = dangtianqingjia; admAttendanceDtlDTO.Xiaojia = dangtianxiaojia; - + admAttendanceDtlDTO.Daixinjia = dangtiandaixinjia; @@ -1255,6 +1427,7 @@ admAttendanceDtlDTO.OvertimeIn = admSignInDTO.OvertimeIn; admAttendanceDtlDTO.OvertimeOut = admSignInDTO.OvertimeOut; admAttendanceDtlDTO.Qingjia = dangtianqingjia; + admAttendanceDtlDTO.Daixinjia = dangtiandaixinjia; admAttendanceDtlDTO.Xiaojia = dangtianxiaojia; @@ -1306,6 +1479,7 @@ admAttendanceDTO.Qingjia = Qingjia; + admAttendanceDTO.Daixinjia = Daixinjia; admAttendanceDTO.Xiaojia = Xiaojia; admAttendanceDTO.Chidao = Chidao; admAttendanceDTO.Islock = "A"; -- Gitblit v1.9.1