From 8de9a465342385e0ebee7dc430abadd69a2b67dd Mon Sep 17 00:00:00 2001 From: username@email.com <yzy2002yzy@163.com> Date: 星期一, 28 六月 2021 12:42:46 +0800 Subject: [PATCH] 工资修改 --- zhengcaioa/zhengcaioa/Timer/TimedBackgroundService.cs | 352 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 336 insertions(+), 16 deletions(-) diff --git a/zhengcaioa/zhengcaioa/Timer/TimedBackgroundService.cs b/zhengcaioa/zhengcaioa/Timer/TimedBackgroundService.cs index 0865bfa..fcac78b 100644 --- a/zhengcaioa/zhengcaioa/Timer/TimedBackgroundService.cs +++ b/zhengcaioa/zhengcaioa/Timer/TimedBackgroundService.cs @@ -35,6 +35,8 @@ private readonly ICooperatecustomCustomerService _cooperatecustomCustomerService; private readonly IGroupTopicService _groupTopicService; private readonly ICooperVisitService _cooperVisitService; + private readonly IIntentionCustomerService _intentionCustomerService; + private readonly IIntentionVisitService _intentionVisitService; private readonly decimal jiabangongzibiaozhun = new decimal(21.5); public TimedBackgroundService(ILogger<TimedBackgroundService> logger, IServiceScopeFactory factory) @@ -57,6 +59,8 @@ _cooperatecustomCustomerService = factory.CreateScope().ServiceProvider.GetRequiredService<ICooperatecustomCustomerService>(); _groupTopicService = factory.CreateScope().ServiceProvider.GetRequiredService<IGroupTopicService>(); _cooperVisitService = factory.CreateScope().ServiceProvider.GetRequiredService<ICooperVisitService>(); + _intentionCustomerService = factory.CreateScope().ServiceProvider.GetRequiredService<IIntentionCustomerService>(); + _intentionVisitService = factory.CreateScope().ServiceProvider.GetRequiredService<IIntentionVisitService>(); } protected override async Task ExecuteAsync(CancellationToken stoppingToken) { @@ -64,15 +68,19 @@ //stoppingToken.Register(() => File.Create($"E:\\dotnetCore\\Practice\\Practice\\{DateTime.Now.Millisecond}.txt")); + DateTime datenow = DateTime.Now.Date; while (!stoppingToken.IsCancellationRequested) { _logger.LogInformation("MyServiceA 寮�濮嬫墽琛�"); + _logger.LogInformation(datenow.ToString("yyyy-MM-dd HH:mm:ss")); //姣忓ぉ鐨�0鐐瑰紑濮嬭绠� - if (DateTime.Now.Hour == 0) + if (datenow <= DateTime.Now.Date && DateTime.Now.Hour == 0) //if (true) { + try { + _logger.LogInformation("鍒ゆ柇鏄惁鏄浜斾釜宸ヤ綔鏃ョ粨鏉�"); DateTime diwutian = this.diwugongzuori(); //绗簲涓伐浣滄棩缁撴潫鍚庡紑濮嬭绠� if (DateTime.Now.Date == diwutian.AddDays(1)) @@ -80,9 +88,10 @@ { try { + _logger.LogInformation("璁$畻鑰冨嫟宸ヨ祫"); //using (TransactionScope scope = new TransactionScope()) //{ - this.jisuankaoqin(); + this.jisuankaoqin(); this.jisuangongzi(); //scope.Complete(); //} @@ -93,17 +102,25 @@ _logger.LogInformation(ex.ToString()); } } + + + _logger.LogInformation("鍒ゆ柇鏄惁璁$畻宸ラ緞宸ヨ祫"); + if (DateTime.Now.Date.Month==1 && DateTime.Now.Date.Day == 31) + //if (true) + { + jisuangonglinggongzi(); + } } catch (Exception ex) { _logger.LogInformation(ex.ToString()); } - + datenow = DateTime.Now.Date.AddDays(1); } - await Task.Delay(TimeSpan.FromMinutes(59), stoppingToken); + await Task.Delay(TimeSpan.FromMinutes(10), stoppingToken); _logger.LogInformation("缁х画鎵ц"); } @@ -714,14 +731,236 @@ } 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) + { + 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) + { + 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) + { + Kuanggongtianshu += new decimal(0.5); + } + else + { + //鍒ゆ柇涓婂崍鑰冨嫟鏃堕棿鏄惁鍏ㄨ鐩� + for (int i = 0; i < dateBiJiaoDTOs.Count; i++) + { + if (i == 0) + { + starttime = dateBiJiaoDTOs[i].StartTime; + endttime = dateBiJiaoDTOs[i].EndTime; + } + 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) + { + Kuanggongtianshu += new decimal(0.5); + } + else + { + decimal shangwukuanggong = 0; + if (starttime > StratTimeWorkingStart) + { + TimeSpan chidao = starttime.Value.Subtract(StratTimeWorkingStart); + if (chidao.Days > 0 || (chidao.Hours * 60 + chidao.Minutes) > admAttendanceRuleDTO.Absenteeism) + { + if (shangwukuanggong == 0) + { + Kuanggongtianshu += new decimal(0.5); + } + + } + 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) + { + Kuanggongtianshu += new decimal(0.5); + } + + } + 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) + { + starttime = dateBiJiaoDTOs[i].StartTime; + endttime = dateBiJiaoDTOs[i].EndTime; + } + 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) + { + //Kuanggong += new decimal(0.5); + Kuanggongtianshu += new decimal(0.5); + } + else + { + decimal xiawuwukuanggong = 0; + if (starttime > StratTimeOffworkStart) + { + TimeSpan chidao = starttime.Value.Subtract(StratTimeOffworkStart); + if (chidao.Days > 0 || (chidao.Hours * 60 + chidao.Minutes) > admAttendanceRuleDTO.Absenteeism) + { + 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; + } + + } + Kuanggongtianshu += xiawuwukuanggong; + } + } + + //璁$畻褰撳ぉ鍔犵彮澶╂暟 + Jiaban += (1 - Kuanggongtianshu ); + + Kuanggongtianshu = 0; + //鍔犵彮 //璁$畻鍔犵彮鏃堕棿 if (admSignInDTO != null && admSignInDTO.OvertimeIn.HasValue && admSignInDTO.OvertimeOut.HasValue) { - TimeSpan jiaban = admSignInDTO.OvertimeOut.Value.Subtract(admSignInDTO.OvertimeIn.Value); + DateTime overdate = admSignInDTO.OvertimeIn.Value; + if (admSignInDTO.OvertimeIn.Value < StratTimeOffworkEnd) + { + overdate = StratTimeOffworkEnd; + } + TimeSpan jiaban = admSignInDTO.OvertimeOut.Value.Subtract(overdate); - Jiaban += Math.Round((decimal)(jiaban.Hours * 60+ jiaban.Minutes) / (decimal)shangbanshijian, 2); + Jiaban += Math.Round((decimal)(jiaban.Hours * 60) / (decimal)shangbanshijian, 2); } + + } @@ -1323,7 +1562,7 @@ } } - //hrSalaryDTO.Jiucuo + hrSalaryDTO.Jiucuo = 0; //璁$畻缁╂晥鎻愭垚 hrSalaryDTO.Jixiaoticheng = 0; @@ -1338,7 +1577,8 @@ #region 涓婇棬鎷滆瀹㈡埛 var cooperVisitDTOs = _cooperVisitService.GetListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin); - if (cooperVisitDTOs != null && cooperVisitDTOs.Count > 0) + var intentionVisitDTOs = _intentionVisitService.GetListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin); + if ( cooperVisitDTOs.Count > 0 || intentionVisitDTOs.Count > 0) { var jijianidddd = fiPiecerateDTOs.Where(x => x.Standard == "D" && x.Project == "涓婇棬鎷滆瀹㈡埛").FirstOrDefault(); if (jijianidddd != null) @@ -1351,7 +1591,7 @@ decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value; if (jixiaotichengfangan.Tichengstandard == "01") { - decimal youxiaojijian = cooperVisitDTOs.Count - renwujishu; + decimal youxiaojijian = intentionVisitDTOs.Count + cooperVisitDTOs.Count - renwujishu; if (youxiaojijian > 0) { hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); @@ -1365,7 +1605,7 @@ decimal renwujishu = jixiaotichengfangan.Renwu.Value; if (jixiaotichengfangan.Tichengstandard == "01") { - decimal youxiaojijian = cooperVisitDTOs.Count - renwujishu; + decimal youxiaojijian = intentionVisitDTOs.Count + cooperVisitDTOs.Count - renwujishu; if (youxiaojijian > 0) { hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); @@ -1425,7 +1665,8 @@ #region 瀹㈡埛璧勬枡褰曞叆 var cooperatecustomCustomerDTOs = _cooperatecustomCustomerService.GetListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin); - if (cooperatecustomCustomerDTOs != null && cooperatecustomCustomerDTOs.Count > 0) + var _intentionCustomerDTOs = _intentionCustomerService.GetListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin); + if ( cooperatecustomCustomerDTOs.Count > 0 || _intentionCustomerDTOs.Count > 0) { var jijianidddd = fiPiecerateDTOs.Where(x => x.Standard == "D" && x.Project == "瀹㈡埛璧勬枡褰曞叆").FirstOrDefault(); if (jijianidddd != null) @@ -1438,7 +1679,7 @@ decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value; if (jixiaotichengfangan.Tichengstandard == "01") { - decimal youxiaojijian = cooperatecustomCustomerDTOs.Count - renwujishu; + decimal youxiaojijian = _intentionCustomerDTOs.Count + cooperatecustomCustomerDTOs.Count - renwujishu; if (youxiaojijian > 0) { hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); @@ -1452,7 +1693,7 @@ decimal renwujishu = jixiaotichengfangan.Renwu.Value; if (jixiaotichengfangan.Tichengstandard == "01") { - decimal youxiaojijian = cooperatecustomCustomerDTOs.Count - renwujishu; + decimal youxiaojijian = _intentionCustomerDTOs.Count + cooperatecustomCustomerDTOs.Count - renwujishu; if (youxiaojijian > 0) { hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); @@ -1463,11 +1704,14 @@ } } } + + + #endregion #region 褰曞叆瀹㈡埛绛惧崟 - + var cooperatecustomCustomers = _cooperatecustomCustomerService.GetListsalaryqiandan(userList[i].Id, dateminkaoqin, datemaxkaoqin); if (cooperatecustomCustomers != null && cooperatecustomCustomers.Count > 0) { @@ -2300,7 +2544,59 @@ decimal peichang = hrSalaryDTO.Peichang.HasValue ? hrSalaryDTO.Peichang.Value : 0; decimal jiucuo = hrSalaryDTO.Jiucuo.HasValue ? hrSalaryDTO.Jiucuo.Value : 0; - yingnashuie = jibengongzi + baomifei + gongzuobutie + jiabangongzi + shebao + dianhuabutie + quanqinjiang + jiaotngbutie + jixiaoticheng + jiangjin + bufagongzi - shebaokou - dianhuafei - queqin - fakuan - peichang + jiucuo - geshuiqizheng; + //璁$畻淇濆簳骞磋柂 + if (userList[i].Indate.HasValue && userList[i].miniyearsalary.HasValue) + { + DateTime jixinue = userList[i].Indate.Value; + if (userList[i].Indate.Value.Day != 1) + { + jixinue = new DateTime(userList[i].Indate.Value.AddMonths(1).Year, userList[i].Indate.Value.AddMonths(1).Month, 1); + } + int months = ((datemaxkaoqin.Year - jixinue.Year) * 12) + datemaxkaoqin.Month - jixinue.Month; + + if(months % 12>=1 && months % 12 == 0) + { + decimal baodinianxin = 0; + //鏌ヨ杩囧幓12涓湀鐨勫伐璧� + for(int z = 1; z <= 12; z++) + { + var hrSalaryDTO1 = _hrSalaryService.GetListByUser(userList[i].Id, dateminkaoqin.AddMonths(-z).Year, dateminkaoqin.AddMonths(-z).Month); + if (hrSalaryDTO1 != null) + { + decimal jibengongzi1 = hrSalaryDTO1.Jibengongzi.HasValue ? hrSalaryDTO1.Jibengongzi.Value : 0; + decimal baomifei1 = hrSalaryDTO1.Baomifei.HasValue ? hrSalaryDTO1.Baomifei.Value : 0; + decimal gongzuobutie1 = hrSalaryDTO1.Gongzuobutie.HasValue ? hrSalaryDTO1.Gongzuobutie.Value : 0; + decimal jiabangongzi1 = hrSalaryDTO1.Jiabangongzi.HasValue ? hrSalaryDTO1.Jiabangongzi.Value : 0; + decimal shebao1 = hrSalaryDTO1.Shebao.HasValue ? hrSalaryDTO1.Shebao.Value : 0; + decimal dianhuabutie1 = hrSalaryDTO1.Dianhuabutie.HasValue ? hrSalaryDTO1.Dianhuabutie.Value : 0; + decimal quanqinjiang1 = hrSalaryDTO1.Quanqinjiang.HasValue ? hrSalaryDTO1.Quanqinjiang.Value : 0; + decimal jiaotngbutie1 = hrSalaryDTO1.Jiaotngbutie.HasValue ? hrSalaryDTO1.Jiaotngbutie.Value : 0; + decimal jixiaoticheng1 = hrSalaryDTO1.Jixiaoticheng.HasValue ? hrSalaryDTO1.Jixiaoticheng.Value : 0; + decimal jiangjin1 = hrSalaryDTO1.Jiangjin.HasValue ? hrSalaryDTO1.Jiangjin.Value : 0; + decimal bufagongzi1 = hrSalaryDTO1.Bufagongzi.HasValue ? hrSalaryDTO1.Bufagongzi.Value : 0; + decimal shebaokou1 = hrSalaryDTO1.Shebaokou.HasValue ? hrSalaryDTO1.Shebaokou.Value : 0; + + decimal dianhuafei1 = hrSalaryDTO1.Dianhuafei.HasValue ? hrSalaryDTO1.Dianhuafei.Value : 0; + decimal queqin1 = hrSalaryDTO1.Queqin.HasValue ? hrSalaryDTO1.Queqin.Value : 0; + decimal fakuan1 = hrSalaryDTO1.Fakuan.HasValue ? hrSalaryDTO1.Fakuan.Value : 0; + 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 += jibengongzi + baomifei + gongzuobutie + jiabangongzi + shebao + quanqinjiang + jiaotngbutie + jixiaoticheng + jiangjin + bufagongzi + jiucuo; + if(baodinianxin < userList[i].miniyearsalary.Value) + { + jiucuo = userList[i].miniyearsalary.Value - baodinianxin; + } + } + } + + + + + yingnashuie = jibengongzi + baomifei + gongzuobutie + jiabangongzi + shebao + quanqinjiang + jiaotngbutie + jixiaoticheng + jiangjin + bufagongzi - shebaokou + ( (dianhuabutie - dianhuafei)<=0? (dianhuabutie - dianhuafei) : 0) - queqin - fakuan - peichang + jiucuo - geshuiqizheng; hrSalaryDTO.Geshui = 0; @@ -2389,7 +2685,7 @@ } decimal geshui = hrSalaryDTO.Geshui.HasValue ? hrSalaryDTO.Geshui.Value : 0; - hrSalaryDTO.Daozhanggongzi += jibengongzi + baomifei + gongzuobutie + jiabangongzi + shebao + dianhuabutie + quanqinjiang + jiaotngbutie + jixiaoticheng + jiangjin + bufagongzi - shebaokou - geshui - dianhuafei - queqin - fakuan - peichang + jiucuo; + hrSalaryDTO.Daozhanggongzi += jibengongzi + baomifei + gongzuobutie + jiabangongzi + shebao + quanqinjiang + jiaotngbutie + jixiaoticheng + jiangjin + bufagongzi - shebaokou - geshui + ((dianhuabutie - dianhuafei) <= 0 ? (dianhuabutie - dianhuafei) : 0) - queqin - fakuan - peichang + jiucuo; @@ -2418,6 +2714,30 @@ + //璁$畻鏄惁娑ㄥ伐榫勫伐璧� + public void jisuangonglinggongzi() + { + _logger.LogInformation("璁$畻鏄惁娑ㄥ伐榫勫伐璧�"); + List<PltUserDTO> userList = _userService.GetList();//.Where(x => x.UserSn == "yang").ToList(); + foreach(var userDTO in userList) + { + if (userDTO.senioritywages.HasValue && userDTO.Indate.HasValue) + { + int year = DateTime.Now.Year - (userDTO.Indate.Value.Year+1); + if (userDTO.Indate.Value.Month==1 && userDTO.Indate.Value.Day == 1) + { + year = DateTime.Now.Year - userDTO.Indate.Value.Year ; + } + if ( year >= 1) + { + userDTO.BasicPrice += userDTO.senioritywages.Value; + _userService.savePltUser(userDTO); + _logger.LogInformation(userDTO.Name +"娑ㄥ伐榫勫伐璧�"+ userDTO.senioritywages.HasValue +" 涔嬪悗鏈堣柂" + userDTO.BasicPrice); + } + } + } + } + public AdmAskLeaveDTO jisianChecktime(DateTime StratTime, DateTime EndTime) { //string dateDiff = null; -- Gitblit v1.9.1