From 5421f9a6e5e2b28cc32aa8aa6dec9becd0c1eb3c Mon Sep 17 00:00:00 2001 From: username@email.com <yzy2002yzy@163.com> Date: 星期三, 04 一月 2023 10:19:57 +0800 Subject: [PATCH] 业务经理意向和合作客户只能1000,90天意向不转合作就制空业务经理,查询没有业务经理的档案客户和合作客户 --- zhengcaioa/zhengcaioa/Timer/TimedBackgroundService.cs | 4212 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 4,208 insertions(+), 4 deletions(-) diff --git a/zhengcaioa/zhengcaioa/Timer/TimedBackgroundService.cs b/zhengcaioa/zhengcaioa/Timer/TimedBackgroundService.cs index 1389a5e..7430db2 100644 --- a/zhengcaioa/zhengcaioa/Timer/TimedBackgroundService.cs +++ b/zhengcaioa/zhengcaioa/Timer/TimedBackgroundService.cs @@ -1,20 +1,90 @@ -锘縰sing Microsoft.Extensions.Hosting; +锘縰sing DTO; +using IServices; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; using System; +using System.Collections.Generic; using System.IO; +using System.Linq; +using System.Net.Http; +using System.Net.Http.Headers; using System.Threading; using System.Threading.Tasks; +using System.Transactions; +using zhengcaioa.IService; +using zhengcaioa.Models; namespace zhengcaioa.Timer { public class TimedBackgroundService : BackgroundService { private readonly ILogger _logger; - + private readonly IAdmAttendanceRuleService _attendanceRuleService; + private readonly IUserService _userService; + private readonly IAdmSigninService _signinService; + private readonly IAdmAttendanceService _admAttendanceService; + private readonly IAdmAttendanceDtlService _admAttendanceDtlService; + private readonly IHrSalaryService _hrSalaryService; + private readonly IHrJibengongziService _JibengongziService; + private readonly ISimService _simService; + private readonly IDailyManagementService _DailyManageService; + private readonly IAdmBreakPrecedentService _admBreakPrecedentService; + private readonly IHrJixiaotichengService _hrJixiaotichengService; + private readonly IFiPiecerateService _fiPiecerateService; + private readonly IAdmPieceCheckService _admPieceCheckService; + private readonly ICooperOrderService _cooperOrderService; + private readonly ICooperatecustomCustomerService _cooperatecustomCustomerService; + private readonly IGroupTopicService _groupTopicService; + private readonly ICooperVisitService _cooperVisitService; + private readonly IIntentionCustomerService _intentionCustomerService; + private readonly IIntentionVisitService _intentionVisitService; + private readonly IProjectService _projectService; + private readonly ICusFangwenjiluService _cusFangwenjiluService; + private readonly ILiaotianService _liaotianService; + private readonly IDtChannelArticleNewsService _dtChannelArticleNewsService; + private readonly IConfiguration _configuration; + private readonly IHttpClientFactory _clientFactory; + private readonly IAskService _askService; + private readonly IAdmEvaluateService _admEvaluateService; + private readonly IExpertService _expertService; - public TimedBackgroundService(ILogger<TimedBackgroundService> logger) + private readonly decimal jiabangongzibiaozhun = new decimal(21.5); + public TimedBackgroundService(ILogger<TimedBackgroundService> logger, IServiceScopeFactory factory) { _logger = logger; + _attendanceRuleService = factory.CreateScope().ServiceProvider.GetRequiredService<IAdmAttendanceRuleService>(); + _userService = factory.CreateScope().ServiceProvider.GetRequiredService<IUserService>(); + _signinService = factory.CreateScope().ServiceProvider.GetRequiredService<IAdmSigninService>(); + _admAttendanceService = factory.CreateScope().ServiceProvider.GetRequiredService<IAdmAttendanceService>(); + _admAttendanceDtlService = factory.CreateScope().ServiceProvider.GetRequiredService<IAdmAttendanceDtlService>(); + _hrSalaryService = factory.CreateScope().ServiceProvider.GetRequiredService<IHrSalaryService>(); + _JibengongziService = factory.CreateScope().ServiceProvider.GetRequiredService<IHrJibengongziService>(); + _simService = factory.CreateScope().ServiceProvider.GetRequiredService<ISimService>(); + _DailyManageService = factory.CreateScope().ServiceProvider.GetRequiredService<IDailyManagementService>(); + _admBreakPrecedentService = factory.CreateScope().ServiceProvider.GetRequiredService<IAdmBreakPrecedentService>(); + _hrJixiaotichengService = factory.CreateScope().ServiceProvider.GetRequiredService<IHrJixiaotichengService>(); + _fiPiecerateService = factory.CreateScope().ServiceProvider.GetRequiredService<IFiPiecerateService>(); + _admPieceCheckService = factory.CreateScope().ServiceProvider.GetRequiredService<IAdmPieceCheckService>(); + _cooperOrderService = factory.CreateScope().ServiceProvider.GetRequiredService<ICooperOrderService>(); + _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>(); + + _projectService = factory.CreateScope().ServiceProvider.GetRequiredService<IProjectService>(); + _cusFangwenjiluService = factory.CreateScope().ServiceProvider.GetRequiredService<ICusFangwenjiluService>(); + _liaotianService = factory.CreateScope().ServiceProvider.GetRequiredService<ILiaotianService>(); + _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>(); } protected override async Task ExecuteAsync(CancellationToken stoppingToken) { @@ -22,11 +92,64 @@ //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 (datenow <= DateTime.Now.Date && DateTime.Now.Hour == 0) + //if (true) + { - await Task.Delay(TimeSpan.FromMinutes(1), stoppingToken); + try + { + _logger.LogInformation("鎶婅秴杩�90澶╄繕娌℃湁杞寲鐨勬。妗堝鎴风殑涓氬姟缁忕悊褰掍负鏃�"); + this.ywjlguiling(); + + _logger.LogInformation("鎶婅秴杩�90澶╄繕娌℃湁杞寲鐨勬。妗堝鎴风殑涓氬姟缁忕悊褰掍负鏃犳墽琛岀粨鏉�"); + + _logger.LogInformation("鍒ゆ柇鏄惁鏄浜斾釜宸ヤ綔鏃ョ粨鏉�"); + DateTime diwutian = this.diwugongzuori(); + //绗簲涓伐浣滄棩缁撴潫鍚庡紑濮嬭绠� + if (DateTime.Now.Date == diwutian.AddDays(1)) + //if (true) + { + try + { + _logger.LogInformation("璁$畻鑰冨嫟宸ヨ祫"); + //using (TransactionScope scope = new TransactionScope()) + //{ + this.jisuankaoqin(); + await this.jisuangongziAsync(); + //scope.Complete(); + //} + + } + catch (Exception ex) + { + _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(10), stoppingToken); _logger.LogInformation("缁х画鎵ц"); } @@ -38,5 +161,4086 @@ { base.Dispose(); } + //璁$畻绗簲涓伐浣滄棩 + public DateTime diwugongzuori() + { + var admAttendanceRulesDtlDTOs = _attendanceRuleService.GetDtlList(""); + AdmAttendanceRuleDTO admAttendanceRuleDTO = _attendanceRuleService.Get(""); + var jiejiari = admAttendanceRulesDtlDTOs.Where(x => x.Name == "jiejiari").ToList(); + var tiaoxiuri = admAttendanceRulesDtlDTOs.Where(x => x.Name == "tiaoxiuri").ToList(); + //鑾峰彇鏈湀鐨勭浜斾釜宸ヤ綔鏃ユ棩鏈熴�� + DateTime datemin = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1); + DateTime datemax = datemin.AddMonths(1); + _logger.LogInformation("datemin" + datemin); + _logger.LogInformation("datemax" + datemax); + DateTime diwutian = DateTime.MinValue; + int i = 0; + while (datemin < datemax) + { + //鏄惁涓婄彮鏃ユ湡 + if ((int)datemin.DayOfWeek >= admAttendanceRuleDTO.WeekStart && (int)datemin.DayOfWeek <= admAttendanceRuleDTO.WeekEnd) + { + //鏄惁鑺傚亣鏃� + if (jiejiari.Exists(x => x.ValueStart <= datemin && x.ValueEnd >= datemin)) + { + } + else + { + i += 1; + } + } + else + { + //鏄惁璋冧紤鏃� 璋冧紤鏃ラ渶瑕佷笂鐝� + if (tiaoxiuri.Exists(x => x.ValueStart <= datemin && x.ValueEnd >= datemin)) + { + i += 1; + } + else + { + } + } + if (i == 5) + { + diwutian = datemin; + break; + } + datemin = datemin.AddDays(1); + } + _logger.LogInformation("diwutian" + diwutian); + _logger.LogInformation("DateTime.Now" + DateTime.Now.Date); + 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); + } + } + + //璁$畻鑰冨嫟 + public void jisuankaoqin() + { + var admAttendanceRulesDtlDTOs = _attendanceRuleService.GetDtlList(""); + 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('.'); + int WorkingStarthour = int.Parse(WorkingStart[0]); + int WorkingStartmin = int.Parse(WorkingStart[1]); + + string[] WorkingEnd = admAttendanceRuleDTO.WorkingEnd.Split('.'); + int WorkingEndhour = int.Parse(WorkingEnd[0]); + int WorkingEndmin = int.Parse(WorkingEnd[1]); + + string[] OffworkStart = admAttendanceRuleDTO.OffworkStart.Split('.'); + int OffworkStarthour = int.Parse(OffworkStart[0]); + int OffworkStartmin = int.Parse(OffworkStart[1]); + + string[] OffworkEnd = admAttendanceRuleDTO.OffworkEnd.Split('.'); + int OffworkEndhour = int.Parse(OffworkEnd[0]); + int OffworkEndmin = int.Parse(OffworkEnd[1]); + + + + + 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(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(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 admAttendanceDTO = _admAttendanceService.GetByUserAndDate(userList[a].Id, dateminkaoqin.Year, dateminkaoqin.Month); + if (admAttendanceDTO == null) + { + admAttendanceDTO = new AdmAttendanceDTO(); + admAttendanceDTO.Userid = userList[a].Id; + admAttendanceDTO.Year = dateminkaoqin.Year; + admAttendanceDTO.Month = dateminkaoqin.Month; + admAttendanceDTO.Yingchuqin = 0; + admAttendanceDTO.Offdays = 0; + admAttendanceDTO.Shijichuqin = 0; + admAttendanceDTO.Qingjia = 0; + admAttendanceDTO.Jiaban = 0; + admAttendanceDTO.Xiaojia = 0; + admAttendanceDTO.Chidao = 0; + admAttendanceDTO.Zaotui = 0; + admAttendanceDTO.Kuanggong = 0; + admAttendanceDTO.Islock = "D"; + admAttendanceDTO.RecStatus = "A"; + admAttendanceDTO.Creater = "1"; + admAttendanceDTO.Modifier = "1"; + admAttendanceDTO.Createtime = DateTime.Now; + admAttendanceDTO.Modifytime = admAttendanceDTO.Createtime; + + resultEntity = _admAttendanceService.save(admAttendanceDTO); + if(resultEntity.Result == false) + { + throw new Exception("璁$畻澶辫触"); + } + } + int Yingchuqin = 0; + int Offdays = 0; + decimal Shijichuqin = 0; + decimal Qingjia = 0; + decimal Jiaban = 0; + decimal Chidao = 0; + decimal Zaotui = 0; + decimal Kuanggong = 0; + decimal Xiaojia = 0; + + while (dateminkaoqin < datemaxkaoqin) + { + _logger.LogInformation("dateminkaoqin " + dateminkaoqin); + bool iswork = false; + + //鏄惁涓婄彮鏃ユ湡 + if ((int)dateminkaoqin.DayOfWeek >= admAttendanceRuleDTO.WeekStart && (int)dateminkaoqin.DayOfWeek <= admAttendanceRuleDTO.WeekEnd) + { + //鏄惁鑺傚亣鏃� + if (jiejiari.Exists(x => x.ValueStart <= dateminkaoqin && x.ValueEnd >= dateminkaoqin)) + { + Offdays += 1; + } + else + { + Yingchuqin += 1; + iswork = true; + } + } + else + { + //鏄惁璋冧紤鏃� 璋冧紤鏃ラ渶瑕佷笂鐝� + if (tiaoxiuri.Exists(x => x.ValueStart <= dateminkaoqin.Date && x.ValueEnd >= dateminkaoqin.Date)) + { + Yingchuqin += 1; + iswork = true; + } + else + { + Offdays += 1; + } + } + //绂昏亴褰撳ぉ璁$畻鑰冨嫟 + if(userList[a].Zhiwustatus == "D" && userList[a].Outdate.HasValue && dateminkaoqin >userList[a].Outdate ) + { + dateminkaoqin = dateminkaoqin.AddDays(1); + continue; + } + + if (userList[a].Indate.HasValue && dateminkaoqin < userList[a].Indate) + { + dateminkaoqin = dateminkaoqin.AddDays(1); + continue; + } + + //鍒ゆ柇鑰冨嫟鐘舵�� + AdmSignInDTO admSignInDTO = _signinService.GetByUserAndDate(userList[a].Id, dateminkaoqin); + if (admSignInDTO == null) + { + 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<AdmAskLeaveOffDTO> admAskLeaveOffDTOMin = admAskLeaveOffDTOs.Where(x => x.StratTime < dateminkaoqin.AddDays(1) && x.EndTime > dateminkaoqin).OrderByDescending(x => x.Createtime).ToList(); + + + //璇峰亣寮�濮嬫椂闂翠笂鐝椂闂� + DateTime StratTimeWorkingStart = dateminkaoqin.Date.AddHours(WorkingStarthour).AddMinutes(WorkingStartmin); + + DateTime StratTimeWorkingEnd = dateminkaoqin.Date.AddHours(WorkingEndhour).AddMinutes(WorkingEndmin); + + DateTime StratTimeOffworkStart = dateminkaoqin.Date.AddHours(OffworkStarthour).AddMinutes(OffworkStartmin); + + DateTime StratTimeOffworkEnd = dateminkaoqin.Date.AddHours(OffworkEndhour).AddMinutes(OffworkEndmin); + + + + //涓婄彮鏃堕棿 + + TimeSpan shangwu = StratTimeWorkingEnd.Subtract(StratTimeWorkingStart); + + TimeSpan xiawu = StratTimeOffworkEnd.Subtract(StratTimeOffworkStart); + + + + + int shangbanshijian = shangwu.Hours * 60 + shangwu.Minutes + xiawu.Hours * 60 + xiawu.Minutes; + + decimal Shangwuchidaofenzhong = 0; + decimal Xiawuchidaofenzhong = 0; + decimal Shangwuzaotuifenzhong = 0; + decimal Xiawuzaotuifenzhong = 0; + decimal Kuanggongtianshu = 0; + decimal dangtianqingjia = 0; + decimal dangtianxiaojia = 0; + string Iswork = "D"; + if (iswork) + { + Iswork = "A"; + } + //鏄惁鏄伐浣滄棩 + if (iswork) + { + //鍒ゆ柇鑰冨嫟鏃堕棿鐨勮繛缁�� + + //鍒ゆ柇鏃╀笂鏄惁杩熷埌,鍒ゆ柇鏃╀笂鏄惁鏃╅��锛屾棭閫�鐭垮伐澶勭悊 + 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); + } + foreach (var admAskLeave in admAskLeaveDTOMin) + { + if(admAskLeave.StratTime< StratTimeWorkingEnd) + { + DateBiJiaoDTO dateBiJiaoDTO = new DateBiJiaoDTO(); + dateBiJiaoDTO.StartTime = admAskLeave.StratTime; + dateBiJiaoDTO.EndTime = admAskLeave.EndTime; + dateBiJiaoDTOs.Add(dateBiJiaoDTO); + } + + } + + 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 + { + //鍒ゆ柇涓婂崍鑰冨嫟鏃堕棿鏄惁鍏ㄨ鐩� + 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 (endttime>= StratTimeWorkingEnd) + { + break; + } + } + if (kuanggong) + { + Kuanggong += new decimal(0.5); + 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) + { + shangwukuanggong += new decimal(0.5); + Kuanggong += 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) + { + shangwukuanggong += new decimal(0.5); + Kuanggong += 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); + } + 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 + { + //鍒ゆ柇涓婂崍鑰冨嫟鏃堕棿鏄惁鍏ㄨ鐩� + 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 (endttime >= StratTimeOffworkEnd) + { + break; + } + } + 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; + } + } + + + //璁$畻褰撳ぉ璇峰亣 + 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; + //璁$畻褰撳ぉ鍑哄嫟澶╂暟 + Shijichuqin += (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; + + + + //璁$畻鍔犵彮鏃堕棿 + if (admSignInDTO != null && admSignInDTO.OvertimeIn.HasValue && admSignInDTO.OvertimeOut.HasValue) + { + var admAskovertimeDTO = _askService.GetAskovertimeByUeridAndjiabantime(userList[a].Id, dateminkaoqin); + if(admAskovertimeDTO!=null&& !string.IsNullOrEmpty(admAskovertimeDTO.Id)) + { + 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); + } + + + + } + } + else + { + //鍒ゆ柇浠婂ぉ鏄惁鍏徃瑕佹眰鍔犵彮 + var shifoujiaban = jiabanri.Exists(x => x.ValueStart <= dateminkaoqin && x.ValueEnd >= dateminkaoqin); + if (shifoujiaban) + { + + //鍒ゆ柇鑰冨嫟鏃堕棿鐨勮繛缁�� + + //鍒ゆ柇鏃╀笂鏄惁杩熷埌,鍒ゆ柇鏃╀笂鏄惁鏃╅��锛屾棭閫�鐭垮伐澶勭悊 + 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); + } + foreach (var admAskLeave in admAskLeaveDTOMin) + { + if (admAskLeave.StratTime < StratTimeWorkingEnd) + { + DateBiJiaoDTO dateBiJiaoDTO = new DateBiJiaoDTO(); + dateBiJiaoDTO.StartTime = admAskLeave.StratTime; + dateBiJiaoDTO.EndTime = admAskLeave.EndTime; + dateBiJiaoDTOs.Add(dateBiJiaoDTO); + } + + } + + 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 + { + //鍒ゆ柇涓婂崍鑰冨嫟鏃堕棿鏄惁鍏ㄨ鐩� + 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 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) + { + shangwukuanggong += new decimal(0.5); + Kuanggong += 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) + { + shangwukuanggong += new decimal(0.5); + Kuanggong += 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); + } + 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 + { + //鍒ゆ柇涓婂崍鑰冨嫟鏃堕棿鏄惁鍏ㄨ鐩� + 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; + } + } + + + //璁$畻褰撳ぉ璇峰亣 + 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; + //璁$畻褰撳ぉ鍑哄嫟澶╂暟 + 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; + } + + + + + //鍔犵彮 + //璁$畻鍔犵彮鏃堕棿 + if (admSignInDTO != null && admSignInDTO.OvertimeIn.HasValue && admSignInDTO.OvertimeOut.HasValue) + { + var admAskovertimeDTO = _askService.GetAskovertimeByUeridAndjiabantime(userList[a].Id, dateminkaoqin); + if (admAskovertimeDTO != null && !string.IsNullOrEmpty(admAskovertimeDTO.Id)) + { + //濡傛灉褰撳ぉ鏄叕鍙歌姹傚姞鐝�,鍒欒嚜宸辩敵璇风殑鍔犵彮浠庝笅鐝紑濮嬬畻 + 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); + } + } + + + } + + + + + + //鎻掑叆鑰冨嫟鏄庣粏琛� + AdmAttendanceDtlDTO admAttendanceDtlDTO = _admAttendanceDtlService.GetByUserAndDate(admAttendanceDTO.Id, dateminkaoqin); + + if (admAttendanceDtlDTO == null) + { + admAttendanceDtlDTO = new AdmAttendanceDtlDTO(); + admAttendanceDtlDTO.AttendanceId = admAttendanceDTO.Id; + admAttendanceDtlDTO.SgninDate = dateminkaoqin; + admAttendanceDtlDTO.MorningIn = admSignInDTO.MorningIn; + admAttendanceDtlDTO.MorningOut = admSignInDTO.MorningOut; + admAttendanceDtlDTO.AfternoonIn = admSignInDTO.AfternoonIn; + admAttendanceDtlDTO.AfternoonOut = admSignInDTO.AfternoonOut; + admAttendanceDtlDTO.OvertimeIn = admSignInDTO.OvertimeIn; + admAttendanceDtlDTO.OvertimeOut = admSignInDTO.OvertimeOut; + admAttendanceDtlDTO.Qingjia = dangtianqingjia; + admAttendanceDtlDTO.Xiaojia = dangtianxiaojia; + + + + + + admAttendanceDtlDTO.RecStatus = "A"; + admAttendanceDtlDTO.Creater = "1"; + admAttendanceDtlDTO.Modifier = "1"; + admAttendanceDtlDTO.Createtime = DateTime.Now; + admAttendanceDtlDTO.Modifytime = admAttendanceDTO.Createtime; + + admAttendanceDtlDTO.Shangwuchidaofenzhong = Shangwuchidaofenzhong; + admAttendanceDtlDTO.Xiawuchidaofenzhong = Xiawuchidaofenzhong; + admAttendanceDtlDTO.Shangwuzaotuifenzhong = Shangwuzaotuifenzhong; + admAttendanceDtlDTO.Xiawuzaotuifenzhong = Xiawuzaotuifenzhong; + admAttendanceDtlDTO.Kuanggongtianshu = Kuanggongtianshu; + admAttendanceDtlDTO.Iswork = Iswork; + + + resultEntity = _admAttendanceDtlService.save(admAttendanceDtlDTO); + if (resultEntity.Result == false) + { + throw new Exception("璁$畻澶辫触"); + } + } + else + { + admAttendanceDtlDTO.AttendanceId = admAttendanceDTO.Id; + admAttendanceDtlDTO.SgninDate = dateminkaoqin; + admAttendanceDtlDTO.MorningIn = admSignInDTO.MorningIn; + admAttendanceDtlDTO.MorningOut = admSignInDTO.MorningOut; + admAttendanceDtlDTO.AfternoonIn = admSignInDTO.AfternoonIn; + admAttendanceDtlDTO.AfternoonOut = admSignInDTO.AfternoonOut; + admAttendanceDtlDTO.OvertimeIn = admSignInDTO.OvertimeIn; + admAttendanceDtlDTO.OvertimeOut = admSignInDTO.OvertimeOut; + admAttendanceDtlDTO.Qingjia = dangtianqingjia; + admAttendanceDtlDTO.Xiaojia = dangtianxiaojia; + + + admAttendanceDtlDTO.RecStatus = "A"; + admAttendanceDtlDTO.Creater = "1"; + admAttendanceDtlDTO.Modifier = "1"; + admAttendanceDtlDTO.Createtime = DateTime.Now; + admAttendanceDtlDTO.Modifytime = admAttendanceDTO.Createtime; + + admAttendanceDtlDTO.Shangwuchidaofenzhong = Shangwuchidaofenzhong; + admAttendanceDtlDTO.Xiawuchidaofenzhong = Xiawuchidaofenzhong; + admAttendanceDtlDTO.Shangwuzaotuifenzhong = Shangwuzaotuifenzhong; + admAttendanceDtlDTO.Xiawuzaotuifenzhong = Xiawuzaotuifenzhong; + admAttendanceDtlDTO.Kuanggongtianshu = Kuanggongtianshu; + admAttendanceDtlDTO.Iswork = Iswork; + + resultEntity = _admAttendanceDtlService.save(admAttendanceDtlDTO); + if (resultEntity.Result == false) + { + throw new Exception("璁$畻澶辫触"); + } + } + + dateminkaoqin = dateminkaoqin.AddDays(1); + } + + if(Shijichuqin< Yingchuqin) + { + if((Yingchuqin -Shijichuqin)< Jiaban) + { + Jiaban = Jiaban - (Yingchuqin - Shijichuqin); + Shijichuqin = Yingchuqin; + } + else + { + Shijichuqin += Jiaban; + Jiaban = 0; + } + } + + admAttendanceDTO.Yingchuqin = Yingchuqin; + admAttendanceDTO.Offdays = Offdays; + admAttendanceDTO.Shijichuqin = Shijichuqin; + admAttendanceDTO.Jiaban = Jiaban; + + + admAttendanceDTO.Zaotui = Zaotui; + admAttendanceDTO.Kuanggong = Kuanggong; + + + admAttendanceDTO.Qingjia = Qingjia; + admAttendanceDTO.Xiaojia = Xiaojia; + admAttendanceDTO.Chidao = Chidao; + admAttendanceDTO.Islock = "A"; + resultEntity = _admAttendanceService.save(admAttendanceDTO); + if (resultEntity.Result == false) + { + throw new Exception("璁$畻澶辫触"); + } + } + + } + + + + //璁$畻宸ヨ祫 + 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(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(); + List<SimBindView> simBindViews = _simService.GetBindSim().Where(x=>x.simstatus == "A").ToList(); + AdmAttendanceRuleDTO admAttendanceRuleDTO = _attendanceRuleService.Get(""); + + //姣忓ぉ鐨勮�冨嫟鏃堕棿鐐� + string[] WorkingStart = admAttendanceRuleDTO.WorkingStart.Split('.'); + int WorkingStarthour = int.Parse(WorkingStart[0]); + int WorkingStartmin = int.Parse(WorkingStart[1]); + + string[] WorkingEnd = admAttendanceRuleDTO.WorkingEnd.Split('.'); + int WorkingEndhour = int.Parse(WorkingEnd[0]); + int WorkingEndmin = int.Parse(WorkingEnd[1]); + + string[] OffworkStart = admAttendanceRuleDTO.OffworkStart.Split('.'); + int OffworkStarthour = int.Parse(OffworkStart[0]); + int OffworkStartmin = int.Parse(OffworkStart[1]); + + string[] OffworkEnd = admAttendanceRuleDTO.OffworkEnd.Split('.'); + int OffworkEndhour = int.Parse(OffworkEnd[0]); + int OffworkEndmin = int.Parse(OffworkEnd[1]); + + List<FiPiecerateDTO> fiPiecerateDTOs = _fiPiecerateService.GetList(); + List<HrJixiaotichengDTO> hrJixiaotichengDTOs = _hrJixiaotichengService.GetList().Where(x => x.Effecttime < datemaxkaoqin).ToList(); + + for (int i = 0; i < userList.Count; i++) + { + _logger.LogInformation("寮�濮嬭绠�" + userList[i].UserName + "宸ヨ祫"); + HrSalaryDTO hrSalaryDTO = _hrSalaryService.GetListByUser(userList[i].Id, dateminkaoqin.Year, dateminkaoqin.Month); + if (hrSalaryDTO == null) + { + hrSalaryDTO = new HrSalaryDTO(); + hrSalaryDTO.Userid = userList[i].Id; + hrSalaryDTO.Year = dateminkaoqin.Year; + hrSalaryDTO.Month = dateminkaoqin.Month; + } + //鏌ヨ褰撴湀鑰冨嫟 + AdmAttendanceDTO admAttendanceDTO = _admAttendanceService.GetByUserAndDate(userList[i].Id, dateminkaoqin.Year, dateminkaoqin.Month); + if (admAttendanceDTO == null) + { + _logger.LogInformation( userList[i].UserName + ":" + dateminkaoqin.Year+"骞�"+ dateminkaoqin.Month + "鏈堟病鏈夋煡璇㈠埌鑰冨嫟"); + continue; + } + AdmAttendanceDtlDTOSearch searchEntity = new AdmAttendanceDtlDTOSearch(); + 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); + //鏄惁鍦ㄨ瘯鐢ㄦ湡 + decimal geshuiqizheng = 5000; + if (userList[i].geshuiqizheng.HasValue) + { + geshuiqizheng = userList[i].geshuiqizheng.Value; + } + 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)) + { + + foreach (var admAttendanceDtlDTO in admAttendanceDtlDTOs) + { + if (admAttendanceDtlDTO.SgninDate <= userList[i].ShiyongDateEnd.Value && admAttendanceDtlDTO.Iswork == "A") + { + shiyongqichuqintianshu += (1 - admAttendanceDtlDTO.Qingjia - admAttendanceDtlDTO.Kuanggongtianshu); + if (admAttendanceDtlDTO.Kuanggongtianshu > 0) + { + var queqingkoukuan = Math.Round(userList[i].ShiyongPrice.Value / jiabangongzibiaozhun * admAttendanceDtlDTO.Kuanggongtianshu * (admAttendanceRuleDTO.AbsenteeismPayment1 - 1), 2); + if (queqingkoukuan > 0) + { + hrSalaryDTO.Queqin += queqingkoukuan; + } + } + } + } + + + + + 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 + { + if (admAttendanceDTO.Kuanggong > 0) + { + var queqingkoukuan = Math.Round(userList[i].ShiyongPrice.Value / jiabangongzibiaozhun * admAttendanceDTO.Kuanggong * (admAttendanceRuleDTO.AbsenteeismPayment1 - 1), 2); + if (queqingkoukuan > 0) + { + hrSalaryDTO.Queqin += queqingkoukuan; + } + } + 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); + + + + + + + + + } + else + { + //宸ヤ綔璇勪环缃氭 + hrSalaryDTO.Fakuan += Math.Round(BasicPrice * admEvaluateDTOs.Count/ admAttendanceDTO.Yingchuqin , 2); + } + + + if(true) + { + //杞鍚庣殑鍑哄嫟鐜� + 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)) + { + //decimal zhuanzhengchuqintianshu = 0; + foreach (var admAttendanceDtlDTO in admAttendanceDtlDTOs) + { + if (admAttendanceDtlDTO.SgninDate > userList[i].ShiyongDateEnd.Value && admAttendanceDtlDTO.Iswork == "A") + { + //zhuanzhengchuqintianshu += (1 - admAttendanceDtlDTO.Qingjia - admAttendanceDtlDTO.Kuanggongtianshu); + if (admAttendanceDtlDTO.Kuanggongtianshu > 0) + { + var queqingkoukuan = Math.Round(BasicPrice / jiabangongzibiaozhun * admAttendanceDtlDTO.Kuanggongtianshu * (admAttendanceRuleDTO.AbsenteeismPayment1 - 1), 2); + if (queqingkoukuan > 0) + { + hrSalaryDTO.Queqin += queqingkoukuan; + } + } + + } + + + } + //decimal zhuanzhengchuqintianshu = admAttendanceDTO.Shijichuqin - shiyongqichuqintianshu; + //zhuanzhengchuqinlv = Math.Round(zhuanzhengchuqintianshu / admAttendanceDTO.Yingchuqin, 4); + + if (userList[i].ShiyongDate.HasValue && userList[i].ShiyongDateEnd.HasValue && dateminkaoqin >= userList[i].ShiyongDate.Value && dateminkaoqin <= userList[i].ShiyongDateEnd.Value) + { + if(userList[i].ShiyongDateEnd.Value < datemaxkaoqin.AddDays(-1)) + { + hrSalaryDTO.Jiabangongzi += Math.Round((admAttendanceDTO.Jiaban / jiabangongzibiaozhun) * BasicPrice, 2); + } + + } + else + { + hrSalaryDTO.Jiabangongzi += Math.Round((admAttendanceDTO.Jiaban / jiabangongzibiaozhun) * BasicPrice, 2); + } + } + else + { + //鐭垮伐鎵i挶 + if (admAttendanceDTO.Kuanggong > 0) + { + var queqingkoukuan = Math.Round(BasicPrice / jiabangongzibiaozhun * admAttendanceDTO.Kuanggong * (admAttendanceRuleDTO.AbsenteeismPayment1 - 1), 2); + if (queqingkoukuan > 0) + { + hrSalaryDTO.Queqin += queqingkoukuan; + } + } + hrSalaryDTO.Jiabangongzi += Math.Round((admAttendanceDTO.Jiaban / jiabangongzibiaozhun) * BasicPrice, 2); + } + + + + hrSalaryDTO.Gongzuobutie += Math.Round((BasicPrice - hrJibengongzi.Baomifei.Value - hrJibengongzi.Jibengongzi.Value) * zhuanzhengchuqinlv, 2); + + + + + + + } + + //杩熷埌鏃╅��鎵i挶 + //AdmAttendanceDtlDTOSearch searchEntity = new AdmAttendanceDtlDTOSearch(); + //searchEntity.AttendanceId = admAttendanceDTO.Id; + //List<AdmAttendanceDtlDTO> admAttendanceDtlDTOs = _admAttendanceDtlService.GetList(searchEntity).OrderBy(x => x.SgninDate).ToList(); + if (admAttendanceDtlDTOs.Count > 0) + { + for (int j = 0; j < admAttendanceDtlDTOs.Count; j++) + { + if (admAttendanceDtlDTOs[j].Shangwuchidaofenzhong > 0) + { + if (admAttendanceDtlDTOs[j].Shangwuchidaofenzhong < 15) + { + hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment1; + } + else if (admAttendanceDtlDTOs[j].Shangwuchidaofenzhong < 30) + { + hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment2; + } + else if (admAttendanceDtlDTOs[j].Shangwuchidaofenzhong < 60) + { + hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment3; + } + else if (admAttendanceDtlDTOs[j].Shangwuchidaofenzhong < 120) + { + hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment3; + } + + } + if (admAttendanceDtlDTOs[j].Shangwuzaotuifenzhong > 0) + { + if (admAttendanceDtlDTOs[j].Shangwuzaotuifenzhong < 15) + { + hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment1; + } + else if (admAttendanceDtlDTOs[j].Shangwuzaotuifenzhong < 30) + { + hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment2; + } + else if (admAttendanceDtlDTOs[j].Shangwuzaotuifenzhong < 60) + { + hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment3; + } + else if (admAttendanceDtlDTOs[j].Shangwuzaotuifenzhong < 120) + { + hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment3; + } + + } + if (admAttendanceDtlDTOs[j].Xiawuchidaofenzhong > 0) + { + if (admAttendanceDtlDTOs[j].Xiawuchidaofenzhong < 15) + { + hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment1; + } + else if (admAttendanceDtlDTOs[j].Xiawuchidaofenzhong < 30) + { + hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment2; + } + else if (admAttendanceDtlDTOs[j].Xiawuchidaofenzhong < 60) + { + hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment3; + } + else if (admAttendanceDtlDTOs[j].Xiawuchidaofenzhong < 120) + { + hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment3; + } + + } + if (admAttendanceDtlDTOs[j].Xiawuzaotuifenzhong > 0) + { + if (admAttendanceDtlDTOs[j].Xiawuzaotuifenzhong < 15) + { + hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment1; + } + else if (admAttendanceDtlDTOs[j].Xiawuzaotuifenzhong < 30) + { + hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment2; + } + else if (admAttendanceDtlDTOs[j].Xiawuzaotuifenzhong < 60) + { + hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment3; + } + else if (admAttendanceDtlDTOs[j].Xiawuzaotuifenzhong < 120) + { + hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment3; + } + + } + + } + } + //鐥呭亣浜嬪亣鎵i挶 + List<AdmAskLeaveDTO> admAskLeaveDTOs = _signinService.GetAskLeaveByUserId(userList[i].Id).Where(x => x.Lavetype == "1" && ( (x.StratTime >= dateminkaoqin && x.StratTime < datemaxkaoqin) || (x.EndTime >= dateminkaoqin && x.EndTime < datemaxkaoqin) || (x.EndTime >= datemaxkaoqin && x.StratTime < dateminkaoqin) )).OrderByDescending(x => x.Createtime).ToList(); + + if(admAskLeaveDTOs!=null && admAskLeaveDTOs.Count > 0) + { + foreach(var admAskLeaveDTO in admAskLeaveDTOs) + { + DateTime? AskLeavestart = null; + DateTime? AskLeaveend = null; + if(admAskLeaveDTO.StratTime< dateminkaoqin) + { + AskLeavestart = dateminkaoqin.AddHours(WorkingStarthour).AddMinutes(WorkingStartmin); + } + else + { + AskLeavestart = admAskLeaveDTO.StratTime; + } + + if (admAskLeaveDTO.EndTime >= datemaxkaoqin) + { + AskLeaveend = dateminkaoqin.AddDays(-1).AddHours(OffworkEndhour).AddMinutes(OffworkEndmin); + } + else + { + AskLeaveend = admAskLeaveDTO.EndTime; + } + AdmAskLeaveDTO admAskLeaveDTO1 = jisianChecktime(AskLeavestart.Value, AskLeaveend.Value); + if (admAskLeaveDTO1.LaveDay.Value > 0 || admAskLeaveDTO1.LavehHour > 0) + { + if (admAskLeaveDTO1.LaveDay.Value >= 1) + { + hrSalaryDTO.Queqin += admAttendanceRuleDTO.PersonalPayment4; + } + else if (admAskLeaveDTO1.LaveDay.Value ==0 && admAskLeaveDTO1.LavehHour >2) + { + hrSalaryDTO.Queqin += admAttendanceRuleDTO.PersonalPayment3; + } + else if (admAskLeaveDTO1.LaveDay.Value == 0 && admAskLeaveDTO1.LavehHour > 1) + { + hrSalaryDTO.Queqin += admAttendanceRuleDTO.PersonalPayment2; + } + else if (admAskLeaveDTO1.LaveDay.Value == 0 && admAskLeaveDTO1.LavehHour ==1) + { + hrSalaryDTO.Queqin += admAttendanceRuleDTO.PersonalPayment1; + } + } + + + } + } + + + + List<AdmAskLeaveOffDTO> admAskLeaveOffDTOs = _signinService.GetAskLeaveOffByUserId(userList[i].Id).Where(x => x.Lavetype == "2" && ((x.StratTime >= dateminkaoqin && x.StratTime < datemaxkaoqin) || (x.EndTime >= dateminkaoqin && x.EndTime < datemaxkaoqin) || (x.EndTime >= datemaxkaoqin && x.StratTime < dateminkaoqin) ) ).OrderByDescending(x => x.Createtime).ToList(); + if (admAskLeaveOffDTOs != null && admAskLeaveOffDTOs.Count > 0) + { + foreach (var admAskLeaveOffDTO in admAskLeaveOffDTOs) + { + DateTime? AskLeavestart = null; + DateTime? AskLeaveend = null; + if (admAskLeaveOffDTO.StratTime < dateminkaoqin) + { + AskLeavestart = dateminkaoqin.AddHours(WorkingStarthour).AddMinutes(WorkingStartmin); + } + else + { + AskLeavestart = admAskLeaveOffDTO.StratTime; + } + + if (admAskLeaveOffDTO.EndTime >= datemaxkaoqin) + { + AskLeaveend = dateminkaoqin.AddDays(-1).AddHours(OffworkEndhour).AddMinutes(OffworkEndmin); + } + else + { + AskLeaveend = admAskLeaveOffDTO.EndTime; + } + AdmAskLeaveDTO admAskLeaveDTO1 = jisianChecktime(AskLeavestart.Value, AskLeaveend.Value); + if (admAskLeaveDTO1.LaveDay.Value > 0 || admAskLeaveDTO1.LavehHour > 0) + { + if (admAskLeaveDTO1.LaveDay.Value >= 1) + { + hrSalaryDTO.Queqin += admAttendanceRuleDTO.SickPayment4; + } + else if (admAskLeaveDTO1.LaveDay.Value == 0 && admAskLeaveDTO1.LavehHour > 2) + { + hrSalaryDTO.Queqin += admAttendanceRuleDTO.SickPayment3; + } + else if (admAskLeaveDTO1.LaveDay.Value == 0 && admAskLeaveDTO1.LavehHour > 1) + { + hrSalaryDTO.Queqin += admAttendanceRuleDTO.SickPayment2; + } + else if (admAskLeaveDTO1.LaveDay.Value == 0 && admAskLeaveDTO1.LavehHour == 1) + { + hrSalaryDTO.Queqin += admAttendanceRuleDTO.SickPayment1; + } + } + + + } + } + + + + + + if(userList[i].IsGmsb != "D" && userList[i].Shebaodate.HasValue && userList[i].Shebaodate.Value < datemaxkaoqin) + { + hrSalaryDTO.Shebao = Shebaodanwei; + hrSalaryDTO.Shebaokou = Shebaodanwei + Shebaogeren; + } + else + { + hrSalaryDTO.Shebao = 0; + hrSalaryDTO.Shebaokou = 0; + } + + + + + + var simBind = simBindViews.Where(x => x.userid == userList[i].Id).FirstOrDefault(); + if (simBind != null) + { + decimal cardpro = 0; + decimal.TryParse(simBind.cardpro, out cardpro); + hrSalaryDTO.Dianhuabutie = cardpro; + } + var SimCost = _simService.GetSimCost(userList[i].Id, dateminkaoqin.Year, dateminkaoqin.Month); + if (SimCost != null) + { + hrSalaryDTO.Dianhuafei = SimCost.bill_amount; + } + + if(admAttendanceDTO.Shijichuqin>=admAttendanceDTO.Yingchuqin + && hrSalaryDTO.Queqin <=0) + { + hrSalaryDTO.Quanqinjiang = hrJibengongzi.Quanqingjiang; + } + else + { + hrSalaryDTO.Quanqinjiang = 0; + } + + + if ("A".Equals(userList[i].Istravelsubsidy)) + { + hrSalaryDTO.Jiaotngbutie = hrJibengongzi.Jiaotongbutie; + } + //hrSalaryDTO.Jiangjin + //hrSalaryDTO.Bufagongzi + //hrSalaryDTO.Peichang + + + + + //宸ヤ綔瀹夋帓缃氭 + List<AdmMemoBookDTO> admMemoBookDTOs = _DailyManageService.GetRemindsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin,"2"); + if (admMemoBookDTOs.Count > 0) + { + for(int j=0; j< admMemoBookDTOs.Count; j++) + { + decimal fakuanshumu = 0; + if (decimal.TryParse(admMemoBookDTOs[j].ZhuiZe, out fakuanshumu)) + { + hrSalaryDTO.Fakuan += fakuanshumu; + } + } + } + //杩濈邯澶勭悊缃氭 + List<AdmBreakPrecedentDTO> admBreakPrecedentDTOs = _admBreakPrecedentService.GetList(userList[i].Id, dateminkaoqin, datemaxkaoqin); + if (admBreakPrecedentDTOs.Count > 0) + { + for (int j = 0; j < admBreakPrecedentDTOs.Count; j++) + { + + if (admBreakPrecedentDTOs[j].Chufajine.HasValue) + { + hrSalaryDTO.Fakuan += admBreakPrecedentDTOs[j].Chufajine.Value; ; + } + } + } + + hrSalaryDTO.Jiucuo = 0; + + //璁$畻缁╂晥鎻愭垚 + hrSalaryDTO.Jixiaoticheng = 0; + + var hrJixiaotichengThis = hrJixiaotichengDTOs.Where(x => x.PostId == userList[i].HrPosition).ToList(); + + if( hrJixiaotichengThis!=null&& hrJixiaotichengThis.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 閲囪喘椤圭洰褰曞叆 + + var projectDTOsyue = _projectService.GetListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin); + if (projectDTOsyue!=null && projectDTOsyue.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 = projectDTOsyue.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 = projectDTOsyue.Count - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); + } + + } + } + } + + } + } + #endregion + + + + + + #region 瀹㈡埛璧勬枡褰曞叆 + + var _intentionCustomerDTOs = _intentionCustomerService.GetListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin); + if (_intentionCustomerDTOs!=null && _intentionCustomerDTOs.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 = _intentionCustomerDTOs.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 = _intentionCustomerDTOs.Count - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); + } + + } + } + } + } + } + + + + #endregion + + #region 鏂板姞缇ょ粍 + + var groupTopicDTOs = _groupTopicService.GetListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin); + if (groupTopicDTOs != null && groupTopicDTOs.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 = groupTopicDTOs.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 = groupTopicDTOs.Count - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); + } + + } + } + } + + } + } + #endregion + + #region 鐢佃瘽鎺ㄥ箍 + + var intentionVisitDTOs = _intentionVisitService.GetListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin).Where(x => x.VisType == "01").ToList(); + if (intentionVisitDTOs != null && intentionVisitDTOs.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 = intentionVisitDTOs.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 = intentionVisitDTOs.Count - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); + } + + } + } + } + + } + } + #endregion + + #region 缇ゅ彂鐭俊 + + var duanxinsyue = _cusFangwenjiluService.GetListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin).Where(x => x.Fasongfangshi == "01").ToList(); + if (duanxinsyue != null && duanxinsyue.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 = duanxinsyue.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 = duanxinsyue.Count - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); + } + + } + } + } + + } + } + #endregion + + #region 缇ゅ彂閭欢 + + var youjiansyue = _cusFangwenjiluService.GetListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin).Where(x => x.Fasongfangshi == "02").ToList(); + if (youjiansyue != null && youjiansyue.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 = youjiansyue.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 = youjiansyue.Count - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); + } + + } + } + } + + } + } + #endregion + + #region 鏂板鎰忓悜瀹㈡埛锛堣鍗曪級 + + var yixiangsyue = _intentionCustomerService.GetListsalaryyixiang(userList[i].Id, dateminkaoqin, datemaxkaoqin); + if (yixiangsyue != null && yixiangsyue.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 = yixiangsyue.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 = yixiangsyue.Count - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); + } + + } + } + } + + } + } + #endregion + + + #region 鏂板娉ㄥ唽浼氬憳 + + //鏈湀鏁伴噺 + List<YaoQingYongHuDTO> zhucehuiyuansyue = new List<YaoQingYongHuDTO>(); + try + { + //var pltUserDTO = _userService.GetPltUserEntity(userList[i].Id); + string huiyuanurl = _configuration.GetSection("huiyuanurl").Value; + string GetYGYaoQingYonghu = _configuration.GetSection("GetYGYaoQingYonghu").Value; + Uri postUrl2 = new Uri(huiyuanurl + GetYGYaoQingYonghu); + + JObject questions2 = new JObject(); + questions2.Add("UserID", userList[i].Id); + questions2.Add("StartTime", dateminkaoqin.ToString("yyyy-MM-dd HH:mm:ss")); + questions2.Add("EndTime", datemaxkaoqin.ToString("yyyy-MM-dd HH:mm:ss")); + + string requestJson2 = questions2.ToString(); + string result2 = string.Empty; + + using (HttpContent httpContent = new StringContent(requestJson2)) + { + httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); + + var httpClient2 = _clientFactory.CreateClient(); + httpClient2.Timeout = new TimeSpan(0, 0, 10); + var Result2 = await httpClient2.PostAsync(postUrl2, httpContent); + result2 = Result2.Content.ReadAsStringAsync().Result; + } + + _logger.LogInformation("result2:" + result2); + JObject jobjectresult = (JObject)JsonConvert.DeserializeObject(result2); + + if (jobjectresult["code"] != null && jobjectresult["code"].ToString() == "1") + { + + zhucehuiyuansyue = JsonConvert.DeserializeObject<List<YaoQingYongHuDTO>>(jobjectresult["data"].ToString()); + + } + + } + catch (Exception ex) + { + + } + + + //var qianyueDTOsyue = _cooperatecustomCustomerService.GetListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin); + if (zhucehuiyuansyue != null && zhucehuiyuansyue.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 = zhucehuiyuansyue.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 = zhucehuiyuansyue.Count - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); + } + + } + } + } + + } + } + #endregion + + + #region 鏂板绛剧害瀹㈡埛 + + var qianyueDTOsyue = _cooperatecustomCustomerService.GetListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin); + if (qianyueDTOsyue != null && qianyueDTOsyue.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 = qianyueDTOsyue.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 = qianyueDTOsyue.Count - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); + } + + } + } + } + + } + } + #endregion + + #region 涓婇棬鎷滆瀹㈡埛 + + var cooperVisitDTOs = _cooperVisitService.GetListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin).Where(x => x.VisType == "02").ToList(); + var intentionVisitDTOsshangmen = _intentionVisitService.GetListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin).Where(x => x.VisType == "02").ToList(); + if ( cooperVisitDTOs.Count > 0 || intentionVisitDTOsshangmen.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 = intentionVisitDTOsshangmen.Count + cooperVisitDTOs.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 = intentionVisitDTOsshangmen.Count + cooperVisitDTOs.Count - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); + } + + } + } + } + + } + } + #endregion + + #region 鏂伴椈璧勮 + //鏈湀鏁伴噺 + DtChannelArticleNewsDTOSearch searchEntity1 = new DtChannelArticleNewsDTOSearch(); + searchEntity1.EndTime = datemaxkaoqin; + searchEntity1.AddTime = dateminkaoqin; + searchEntity1.UserName = userList[i].UserSn; + searchEntity1.CategoryId = 3; + var dtChannelArticleNewsDTOs = _dtChannelArticleNewsService.GetList(searchEntity1); + + if (dtChannelArticleNewsDTOs != null && dtChannelArticleNewsDTOs.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 = dtChannelArticleNewsDTOs.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 = dtChannelArticleNewsDTOs.Count - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); + } + + } + } + } + + } + } + #endregion + + #region 鍏稿瀷妗堜緥 + //鏈湀鏁伴噺 + searchEntity1 = new DtChannelArticleNewsDTOSearch(); + searchEntity1.EndTime = datemaxkaoqin; + searchEntity1.AddTime = dateminkaoqin; + searchEntity1.UserName = userList[i].UserSn; + searchEntity1.CategoryId = 85; + var dianxinanDTOs = _dtChannelArticleNewsService.GetList(searchEntity1); + + if (dianxinanDTOs != null && dianxinanDTOs.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 = dianxinanDTOs.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 = dianxinanDTOs.Count - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); + } + + } + } + } + + } + } + #endregion + + #region 鏀块噰鐭ヨ瘑 + //鏈湀鏁伴噺 + searchEntity1 = new DtChannelArticleNewsDTOSearch(); + searchEntity1.EndTime = datemaxkaoqin; + searchEntity1.AddTime = dateminkaoqin; + searchEntity1.UserName = userList[i].UserSn; + searchEntity1.CategoryId = 73; + var zhengcaizhishiDTOs = _dtChannelArticleNewsService.GetList(searchEntity1); + + if (zhengcaizhishiDTOs != null && zhengcaizhishiDTOs.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 = zhengcaizhishiDTOs.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 = zhengcaizhishiDTOs.Count - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); + } + + } + } + } + + } + } + #endregion + + #region 鏂板灏忛噰闂 + + var xinzengwendaDTOsyue = _liaotianService.GetListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin); + if (xinzengwendaDTOsyue != null && xinzengwendaDTOsyue.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 = xinzengwendaDTOsyue.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 = xinzengwendaDTOsyue.Count - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); + } + + } + } + } + + } + } + #endregion + + #region 瀹℃牳灏忛噰绛旈棶 + + var shenhewendaDTOsyue = _liaotianService.GetListsalaryshenhe(userList[i].Id, dateminkaoqin, datemaxkaoqin); + if (shenhewendaDTOsyue != null && shenhewendaDTOsyue.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 = shenhewendaDTOsyue.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 = shenhewendaDTOsyue.Count - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); + } + + } + } + } + + } + } + #endregion + + #region 褰曞叆瀹㈡埛绛惧崟 + + //var cooperatecustomCustomers = _cooperatecustomCustomerService.GetListsalaryqiandan(userList[i].Id, dateminkaoqin, datemaxkaoqin); + // if (cooperatecustomCustomers != null && cooperatecustomCustomers.Count > 0) + // { + // var jijianidddd = fiPiecerateDTOs.Where(x => x.Standard == "D" && 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 = cooperatecustomCustomers.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 = cooperatecustomCustomers.Count - renwujishu; + // if (youxiaojijian > 0) + // { + // hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); + // } + + // } + // } + // } + // } + // } + #endregion + + + #region 璁′欢鐧昏 + var pieceCheckDTOs = _admPieceCheckService.GetList(userList[i].Id, dateminkaoqin, datemaxkaoqin); + if (pieceCheckDTOs != null && pieceCheckDTOs.Count > 0) + { + foreach (var pieceCheckDTO in pieceCheckDTOs) + { + if (pieceCheckDTO.Gongzi.HasValue) + { + hrSalaryDTO.Jixiaoticheng += pieceCheckDTO.Gongzi.Value; + } + + } + } + #endregion + //鍚堜綔瀹㈡埛璁㈠崟 + List<CooperOrderDTO> cooperOrderDTOs = _cooperOrderService.GetList(userList[i].Id, dateminkaoqin, datemaxkaoqin); + + #region 鍥句功閿�鍞� + var cooperOrdertushu = cooperOrderDTOs.Where(x => x.OrderType == "01").ToList(); + var jijianid = fiPiecerateDTOs.Where(x => x.Project == "鍥句功閿�鍞�").FirstOrDefault(); + if (jijianid != null && cooperOrdertushu.Count>0) + { + var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianid.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 = cooperOrdertushu.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 = cooperOrdertushu.Count - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); + } + + } + } + else if (jixiaotichengfangan.Renwustandard == "03") + { + decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value; + if (jixiaotichengfangan.Tichengstandard == "02") + { + var dingdanjine = cooperOrdertushu.Sum(x => x.Money); + var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0; + //var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui); + //var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0; + + decimal youxiaojijian = dingdanjinezhenshi - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian* new decimal(0.01), 2); + } + } + + } + else if (jixiaotichengfangan.Renwustandard == "04") + { + decimal renwujishu = jixiaotichengfangan.Renwu.Value; + if (jixiaotichengfangan.Tichengstandard == "02") + { + var dingdanjine = cooperOrdertushu.Sum(x => x.Money); + var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0; + //var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui); + //var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0; + + decimal youxiaojijian = dingdanjinezhenshi - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2); + } + } + } + } + } + #endregion + + #region 鏀块噰鍜ㄨ + cooperOrdertushu = cooperOrderDTOs.Where(x => x.OrderType == "02").ToList(); + jijianid = fiPiecerateDTOs.Where(x => x.Project == "鏀块噰鍜ㄨ").FirstOrDefault(); + if (jijianid != null && cooperOrdertushu.Count > 0) + { + var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianid.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 = cooperOrdertushu.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 = cooperOrdertushu.Count - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); + } + + } + } + else if (jixiaotichengfangan.Renwustandard == "03") + { + decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value; + if (jixiaotichengfangan.Tichengstandard == "02") + { + var dingdanjine = cooperOrdertushu.Sum(x => x.Money); + var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0; + //var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui); + //var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0; + + decimal youxiaojijian = dingdanjinezhenshi - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2); + } + } + + } + else if (jixiaotichengfangan.Renwustandard == "04") + { + decimal renwujishu = jixiaotichengfangan.Renwu.Value; + if (jixiaotichengfangan.Tichengstandard == "02") + { + var dingdanjine = cooperOrdertushu.Sum(x => x.Money); + var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0; + //var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui); + //var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0; + + decimal youxiaojijian = dingdanjinezhenshi - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2); + } + } + } + } + } + + #endregion + + #region 鏍囦功鍒朵綔璁㈠崟 + cooperOrdertushu = cooperOrderDTOs.Where(x => x.OrderType == "03").ToList(); + jijianid = fiPiecerateDTOs.Where(x => x.Project == "鏍囦功鍒朵綔璁㈠崟").FirstOrDefault(); + if (jijianid != null && cooperOrdertushu.Count > 0) + { + var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianid.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 = cooperOrdertushu.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 = cooperOrdertushu.Count - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); + } + + } + } + else if (jixiaotichengfangan.Renwustandard == "03") + { + decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value; + if (jixiaotichengfangan.Tichengstandard == "02") + { + var dingdanjine = cooperOrdertushu.Sum(x => x.Money); + var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0; + //var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui); + //var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0; + + decimal youxiaojijian = dingdanjinezhenshi - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2); + } + } + + } + else if (jixiaotichengfangan.Renwustandard == "04") + { + decimal renwujishu = jixiaotichengfangan.Renwu.Value; + if (jixiaotichengfangan.Tichengstandard == "02") + { + var dingdanjine = cooperOrdertushu.Sum(x => x.Money); + var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0; + //var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui); + //var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0; + + decimal youxiaojijian = dingdanjinezhenshi - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2); + } + } + } + } + } + + #endregion + + #region 鍩硅 + cooperOrdertushu = cooperOrderDTOs.Where(x => x.OrderType == "04").ToList(); + jijianid = fiPiecerateDTOs.Where(x => x.Project == "鍩硅").FirstOrDefault(); + if (jijianid != null && cooperOrdertushu.Count > 0) + { + var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianid.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 = cooperOrdertushu.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 = cooperOrdertushu.Count - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); + } + + } + } + else if (jixiaotichengfangan.Renwustandard == "03") + { + decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value; + if (jixiaotichengfangan.Tichengstandard == "02") + { + var dingdanjine = cooperOrdertushu.Sum(x => x.Money); + var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0; + //var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui); + //var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0; + + decimal youxiaojijian = dingdanjinezhenshi - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2); + } + } + + } + else if (jixiaotichengfangan.Renwustandard == "04") + { + decimal renwujishu = jixiaotichengfangan.Renwu.Value; + if (jixiaotichengfangan.Tichengstandard == "02") + { + var dingdanjine = cooperOrdertushu.Sum(x => x.Money); + var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0; + //var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui); + //var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0; + + decimal youxiaojijian = dingdanjinezhenshi - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2); + } + } + } + } + } + + #endregion + + #region 濂楅浼氬憳 + cooperOrdertushu = cooperOrderDTOs.Where(x => x.OrderType == "05").OrderBy(x=>x.Createtime).ToList(); + jijianid = fiPiecerateDTOs.Where(x => x.Project == "濂楅浼氬憳").FirstOrDefault(); + if (jijianid != null && cooperOrdertushu.Count > 0) + { + var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianid.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 = cooperOrdertushu.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 = cooperOrdertushu.Count - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); + } + + } + else if (jixiaotichengfangan.Tichengstandard == "02") + { + + if (cooperOrdertushu.Count > renwujishu) + { + List<CooperOrderDTO> cooperOrdertushuyouxiao = new List<CooperOrderDTO>(); + for (int j = Convert.ToInt32(renwujishu); j < cooperOrdertushu.Count; j++) + { + cooperOrdertushuyouxiao.Add(cooperOrdertushu[j]); + } + var dingdanjine = cooperOrdertushuyouxiao.Sum(x => x.Money); + var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0; + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * dingdanjinezhenshi * new decimal(0.01), 2); + } + } + } + else if (jixiaotichengfangan.Renwustandard == "03") + { + decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value; + if (jixiaotichengfangan.Tichengstandard == "02") + { + var dingdanjine = cooperOrdertushu.Sum(x => x.Money); + var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0; + //var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui); + //var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0; + + decimal youxiaojijian = dingdanjinezhenshi - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2); + } + } + + } + else if (jixiaotichengfangan.Renwustandard == "04") + { + decimal renwujishu = jixiaotichengfangan.Renwu.Value; + if (jixiaotichengfangan.Tichengstandard == "02") + { + var dingdanjine = cooperOrdertushu.Sum(x => x.Money); + var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0; + //var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui); + //var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0; + + decimal youxiaojijian = dingdanjinezhenshi - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2); + } + } + } + } + } + + #endregion + + #region 涓撳鐢宠 + cooperOrdertushu = cooperOrderDTOs.Where(x => x.OrderType == "06").ToList(); + jijianid = fiPiecerateDTOs.Where(x => x.Project == "涓撳鐢宠").FirstOrDefault(); + if (jijianid != null && cooperOrdertushu.Count > 0) + { + var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianid.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 = cooperOrdertushu.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 = cooperOrdertushu.Count - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); + } + + } + } + else if (jixiaotichengfangan.Renwustandard == "03") + { + decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value; + if (jixiaotichengfangan.Tichengstandard == "02") + { + var dingdanjine = cooperOrdertushu.Sum(x => x.Money); + var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0; + //var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui); + //var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0; + + decimal youxiaojijian = dingdanjinezhenshi - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2); + } + } + + } + else if (jixiaotichengfangan.Renwustandard == "04") + { + decimal renwujishu = jixiaotichengfangan.Renwu.Value; + if (jixiaotichengfangan.Tichengstandard == "02") + { + var dingdanjine = cooperOrdertushu.Sum(x => x.Money); + var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0; + //var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui); + //var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0; + + decimal youxiaojijian = dingdanjinezhenshi - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2); + } + } + } + } + } + + #endregion + + #region 灞ョ害绾犵悍 + cooperOrdertushu = cooperOrderDTOs.Where(x => x.OrderType == "07").ToList(); + jijianid = fiPiecerateDTOs.Where(x => x.Project == "灞ョ害绾犵悍").FirstOrDefault(); + if (jijianid != null && cooperOrdertushu.Count > 0) + { + var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianid.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 = cooperOrdertushu.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 = cooperOrdertushu.Count - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); + } + + } + } + else if (jixiaotichengfangan.Renwustandard == "03") + { + decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value; + if (jixiaotichengfangan.Tichengstandard == "02") + { + var dingdanjine = cooperOrdertushu.Sum(x => x.Money); + var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0; + //var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui); + //var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0; + + decimal youxiaojijian = dingdanjinezhenshi - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2); + } + } + + } + else if (jixiaotichengfangan.Renwustandard == "04") + { + decimal renwujishu = jixiaotichengfangan.Renwu.Value; + if (jixiaotichengfangan.Tichengstandard == "02") + { + var dingdanjine = cooperOrdertushu.Sum(x => x.Money); + var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0; + //var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui); + //var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0; + + decimal youxiaojijian = dingdanjinezhenshi - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2); + } + } + } + } + } + + #endregion + + #region 椋庨櫓浠g悊 + cooperOrdertushu = cooperOrderDTOs.Where(x => x.OrderType == "08").ToList(); + jijianid = fiPiecerateDTOs.Where(x => x.Project == "椋庨櫓浠g悊").FirstOrDefault(); + if (jijianid != null && cooperOrdertushu.Count > 0) + { + var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianid.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 = cooperOrdertushu.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 = cooperOrdertushu.Count - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); + } + + } + } + else if (jixiaotichengfangan.Renwustandard == "03") + { + decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value; + if (jixiaotichengfangan.Tichengstandard == "02") + { + var dingdanjine = cooperOrdertushu.Sum(x => x.Money); + var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0; + //var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui); + //var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0; + + decimal youxiaojijian = dingdanjinezhenshi - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2); + } + } + + } + else if (jixiaotichengfangan.Renwustandard == "04") + { + decimal renwujishu = jixiaotichengfangan.Renwu.Value; + if (jixiaotichengfangan.Tichengstandard == "02") + { + var dingdanjine = cooperOrdertushu.Sum(x => x.Money); + var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0; + //var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui); + //var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0; + + decimal youxiaojijian = dingdanjinezhenshi - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2); + } + } + } + } + } + + #endregion + + #region 杞欢閿�鍞彁鎴� + cooperOrdertushu = cooperOrderDTOs.Where(x => x.OrderType == "09").ToList(); + jijianid = fiPiecerateDTOs.Where(x => x.Project == "杞欢閿�鍞彁鎴�").FirstOrDefault(); + if (jijianid != null && cooperOrdertushu.Count > 0) + { + var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianid.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 = cooperOrdertushu.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 = cooperOrdertushu.Count - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); + } + + } + } + else if (jixiaotichengfangan.Renwustandard == "03") + { + decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value; + if (jixiaotichengfangan.Tichengstandard == "02") + { + var dingdanjine = cooperOrdertushu.Sum(x => x.Money); + var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0; + //var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui); + //var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0; + + decimal youxiaojijian = dingdanjinezhenshi - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2); + } + } + + } + else if (jixiaotichengfangan.Renwustandard == "04") + { + decimal renwujishu = jixiaotichengfangan.Renwu.Value; + if (jixiaotichengfangan.Tichengstandard == "02") + { + var dingdanjine = cooperOrdertushu.Sum(x => x.Money); + var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0; + //var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui); + //var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0; + + decimal youxiaojijian = dingdanjinezhenshi - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2); + } + } + } + } + } + + #endregion + + #region 鍏朵粬涓氬姟 + cooperOrdertushu = cooperOrderDTOs.Where(x => x.OrderType == "10").ToList(); + jijianid = fiPiecerateDTOs.Where(x => x.Project == "鍏朵粬涓氬姟").FirstOrDefault(); + if (jijianid != null && cooperOrdertushu.Count > 0) + { + var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianid.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 = cooperOrdertushu.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 = cooperOrdertushu.Count - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); + } + + } + } + else if (jixiaotichengfangan.Renwustandard == "03") + { + decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value; + if (jixiaotichengfangan.Tichengstandard == "02") + { + var dingdanjine = cooperOrdertushu.Sum(x => x.Money); + var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0; + //var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui); + //var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0; + + decimal youxiaojijian = dingdanjinezhenshi - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2); + } + } + + } + else if (jixiaotichengfangan.Renwustandard == "04") + { + decimal renwujishu = jixiaotichengfangan.Renwu.Value; + if (jixiaotichengfangan.Tichengstandard == "02") + { + var dingdanjine = cooperOrdertushu.Sum(x => x.Money); + var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0; + //var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui); + //var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0; + + decimal youxiaojijian = dingdanjinezhenshi - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2); + } + } + } + } + } + + #endregion + + #region 鏁版嵁鍒嗘瀽 + cooperOrdertushu = cooperOrderDTOs.Where(x => x.OrderType == "11").ToList(); + jijianid = fiPiecerateDTOs.Where(x => x.Project == "鏁版嵁鍒嗘瀽").FirstOrDefault(); + if (jijianid != null && cooperOrdertushu.Count > 0) + { + var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianid.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 = cooperOrdertushu.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 = cooperOrdertushu.Count - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); + } + + } + } + else if (jixiaotichengfangan.Renwustandard == "03") + { + decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value; + if (jixiaotichengfangan.Tichengstandard == "02") + { + var dingdanjine = cooperOrdertushu.Sum(x => x.Money); + var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0; + //var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui); + //var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0; + + decimal youxiaojijian = dingdanjinezhenshi - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2); + } + } + + } + else if (jixiaotichengfangan.Renwustandard == "04") + { + decimal renwujishu = jixiaotichengfangan.Renwu.Value; + if (jixiaotichengfangan.Tichengstandard == "02") + { + var dingdanjine = cooperOrdertushu.Sum(x => x.Money); + var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0; + //var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui); + //var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0; + + decimal youxiaojijian = dingdanjinezhenshi - renwujishu; + if (youxiaojijian > 0) + { + hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2); + } + } + } + } + } + + #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 + + } + + + + + hrSalaryDTO.Daozhanggongzi = 0; + decimal jibengongzi = hrSalaryDTO.Jibengongzi.HasValue ? hrSalaryDTO.Jibengongzi.Value : 0; + decimal baomifei = hrSalaryDTO.Baomifei.HasValue ? hrSalaryDTO.Baomifei.Value : 0; + decimal gongzuobutie = hrSalaryDTO.Gongzuobutie.HasValue ? hrSalaryDTO.Gongzuobutie.Value : 0; + decimal jiabangongzi = hrSalaryDTO.Jiabangongzi.HasValue ? hrSalaryDTO.Jiabangongzi.Value : 0; + decimal shebao = hrSalaryDTO.Shebao.HasValue ? hrSalaryDTO.Shebao.Value : 0; + decimal dianhuabutie = hrSalaryDTO.Dianhuabutie.HasValue ? hrSalaryDTO.Dianhuabutie.Value : 0; + decimal quanqinjiang = hrSalaryDTO.Quanqinjiang.HasValue ? hrSalaryDTO.Quanqinjiang.Value : 0; + decimal jiaotngbutie = hrSalaryDTO.Jiaotngbutie.HasValue ? hrSalaryDTO.Jiaotngbutie.Value : 0; + decimal jixiaoticheng = hrSalaryDTO.Jixiaoticheng.HasValue ? hrSalaryDTO.Jixiaoticheng.Value : 0; + decimal jiangjin = hrSalaryDTO.Jiangjin.HasValue ? hrSalaryDTO.Jiangjin.Value : 0; + decimal bufagongzi = hrSalaryDTO.Bufagongzi.HasValue ? hrSalaryDTO.Bufagongzi.Value : 0; + decimal shebaokou = hrSalaryDTO.Shebaokou.HasValue ? hrSalaryDTO.Shebaokou.Value : 0; + + decimal dianhuafei = hrSalaryDTO.Dianhuafei.HasValue ? hrSalaryDTO.Dianhuafei.Value : 0; + decimal queqin = hrSalaryDTO.Queqin.HasValue ? hrSalaryDTO.Queqin.Value : 0; + decimal fakuan = hrSalaryDTO.Fakuan.HasValue ? hrSalaryDTO.Fakuan.Value : 0; + decimal peichang = hrSalaryDTO.Peichang.HasValue ? hrSalaryDTO.Peichang.Value : 0; + decimal jiucuo = hrSalaryDTO.Jiucuo.HasValue ? hrSalaryDTO.Jiucuo.Value : 0; + + //璁$畻淇濆簳骞磋柂 + 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) + { + 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+ peichang1; + } + } + 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 = yingfaheji - geshuiqizheng; + + + hrSalaryDTO.Geshui = 0; + if (yingnashuie > 0) + { + decimal yingnashuie1 = 0; + decimal yingnashuie2 = 0; + decimal yingnashuie3 = 0; + decimal yingnashuie4 = 0; + decimal yingnashuie5 = 0; + decimal yingnashuie6 = 0; + decimal yingnashuie7 = 0; + if (yingnashuie > 80000) + { + yingnashuie1 = 3000; + yingnashuie2 = (12000 - 3000); + yingnashuie3 = (25000 - 12000); + yingnashuie4 = (35000 - 25000); + yingnashuie5 = (55000 - 35000); + yingnashuie6 = (80000 - 55000); + yingnashuie7 = (yingnashuie - 55000); + } + if (yingnashuie > 55000) + { + 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 > 12000) + { + yingnashuie1 = 3000; + yingnashuie2 = (12000 - 3000); + yingnashuie3 = (yingnashuie - 12000); + } + else if (yingnashuie > 3000) + { + yingnashuie1 = 3000; + yingnashuie2 = (yingnashuie - 3000); + } + else + { + yingnashuie1 = yingnashuie; + } + if (yingnashuie1 > 0) + { + 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) - 0, 2); + if (yingjiao2 > 0) + { + hrSalaryDTO.Geshui += yingjiao2; + } + } + if (yingnashuie3 > 0) + { + 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.25) - 0, 2); + if (yingjiao4 > 0) + { + hrSalaryDTO.Geshui += yingjiao4; + } + } + if (yingnashuie5 > 0) + { + 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 = yingfaheji - geshui; + + + + + hrSalaryDTO.RecStatus = "A"; + hrSalaryDTO.Islock = "D"; + hrSalaryDTO.Creater = "1"; + hrSalaryDTO.Createtime = DateTime.Now; + hrSalaryDTO.Modifier = hrSalaryDTO.Creater; + hrSalaryDTO.Modifytime = hrSalaryDTO.Createtime; + _hrSalaryService.save(hrSalaryDTO); + } + } + + + + //璁$畻鏄惁娑ㄥ伐榫勫伐璧� + 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; + AdmAttendanceRuleDTO admAttendanceRuleDTO = _attendanceRuleService.Get(""); + + var admAttendanceRulesDtlDTOs = _attendanceRuleService.GetDtlList(""); + + 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('.'); + int WorkingStarthour = int.Parse(WorkingStart[0]); + int WorkingStartmin = int.Parse(WorkingStart[1]); + + string[] WorkingEnd = admAttendanceRuleDTO.WorkingEnd.Split('.'); + int WorkingEndhour = int.Parse(WorkingEnd[0]); + int WorkingEndmin = int.Parse(WorkingEnd[1]); + + + + string[] OffworkStart = admAttendanceRuleDTO.OffworkStart.Split('.'); + int OffworkStarthour = int.Parse(OffworkStart[0]); + int OffworkStartmin = int.Parse(OffworkStart[1]); + + string[] OffworkEnd = admAttendanceRuleDTO.OffworkEnd.Split('.'); + int OffworkEndhour = int.Parse(OffworkEnd[0]); + int OffworkEndmin = int.Parse(OffworkEnd[1]); + + //璇峰亣寮�濮嬫椂闂翠笂鐝椂闂� + DateTime StratTimeWorkingStart = StratTime.Date.AddHours(WorkingStarthour).AddMinutes(WorkingStartmin); + + DateTime StratTimeWorkingEnd = StratTime.Date.AddHours(WorkingEndhour).AddMinutes(WorkingEndmin); + + DateTime StratTimeOffworkStart = StratTime.Date.AddHours(OffworkStarthour).AddMinutes(OffworkStartmin); + + DateTime StratTimeOffworkEnd = StratTime.Date.AddHours(OffworkEndhour).AddMinutes(OffworkEndmin); + + + //璇峰亣缁撴潫鏃堕棿涓婄彮鏃堕棿 + + DateTime EndTimeWorkingStart = EndTime.Date.AddHours(WorkingStarthour).AddMinutes(WorkingStartmin); + + DateTime EndTimeWorkingEnd = EndTime.Date.AddHours(WorkingEndhour).AddMinutes(WorkingEndmin); + + DateTime EndTimeOffworkStart = EndTime.Date.AddHours(OffworkStarthour).AddMinutes(OffworkStartmin); + + DateTime EndTimeOffworkEnd = EndTime.Date.AddHours(OffworkEndhour).AddMinutes(OffworkEndmin); + + //涓婄彮鏃堕棿 + + TimeSpan shangwu = StratTimeWorkingEnd.Subtract(StratTimeWorkingStart); + + TimeSpan xiawu = StratTimeOffworkEnd.Subtract(StratTimeOffworkStart); + + + + + int shangbanshijian = shangwu.Hours * 60 + shangwu.Minutes + xiawu.Hours * 60 + xiawu.Minutes; + + + int LavehTime = 0; + TimeSpan ts = EndTime.Subtract(StratTime); + for (int i = 0; i <= ts.Days; i++) + { + if (i == 0) + { + //鏄惁涓婄彮鏃ユ湡 + if ((int)StratTime.Date.DayOfWeek >= admAttendanceRuleDTO.WeekStart && (int)StratTime.Date.DayOfWeek <= admAttendanceRuleDTO.WeekEnd) + { + //鏄惁鑺傚亣鏃� + if (jiejiari.Exists(x => x.ValueStart <= StratTime.Date && x.ValueEnd >= StratTime.Date)) + { + + LavehTime += 0; + } + else + { + + + + if (StratTime <= StratTimeWorkingStart) + { + LavehTime += shangbanshijian; + } + else if (StratTime <= StratTimeWorkingEnd) + { + TimeSpan shangwu1 = StratTimeWorkingEnd.Subtract(StratTime); + + TimeSpan xiawu1 = StratTimeOffworkEnd.Subtract(StratTimeOffworkStart); + + + LavehTime += shangwu1.Hours * 60 + shangwu1.Minutes + xiawu1.Hours * 60 + xiawu1.Minutes; + } + else if (StratTime <= StratTimeOffworkStart) + { + + + TimeSpan xiawu1 = StratTimeOffworkEnd.Subtract(StratTimeOffworkStart); + + + LavehTime += xiawu1.Hours * 60 + xiawu1.Minutes; + } + else if (StratTime <= StratTimeOffworkEnd) + { + TimeSpan xiawu1 = StratTimeOffworkEnd.Subtract(StratTime); + + + LavehTime += xiawu1.Hours * 60 + xiawu1.Minutes; + + } + + + + } + } + else + { + + + //鏄惁璋冧紤鏃� 璋冧紤鏃ラ渶瑕佷笂鐝� + 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) + { + LavehTime += shangbanshijian; + } + else if (StratTime <= StratTimeWorkingEnd) + { + TimeSpan shangwu1 = StratTimeWorkingEnd.Subtract(StratTime); + + TimeSpan xiawu1 = StratTimeOffworkEnd.Subtract(StratTimeOffworkStart); + + + LavehTime += shangwu1.Hours * 60 + shangwu1.Minutes + xiawu1.Hours * 60 + xiawu1.Minutes; + } + else if (StratTime <= StratTimeOffworkStart) + { + + + TimeSpan xiawu1 = StratTimeOffworkEnd.Subtract(StratTimeOffworkStart); + + + LavehTime += xiawu1.Hours * 60 + xiawu1.Minutes; + } + else if (StratTime <= StratTimeOffworkEnd) + { + TimeSpan xiawu1 = StratTimeOffworkEnd.Subtract(StratTime); + + + LavehTime += xiawu1.Hours * 60 + xiawu1.Minutes; + + } + } + else + { + LavehTime += 0; + } + } + } + + if (i == ts.Days) + { + //鏄惁涓婄彮鏃ユ湡 + if ((int)EndTime.Date.DayOfWeek >= admAttendanceRuleDTO.WeekStart && (int)EndTime.Date.DayOfWeek <= admAttendanceRuleDTO.WeekEnd) + { + //鏄惁鑺傚亣鏃� + if (jiejiari.Exists(x => x.ValueStart <= EndTime.Date && x.ValueEnd >= EndTime.Date)) + { + + LavehTime += 0; + } + else + { + + + + if (EndTime >= EndTimeOffworkEnd) + { + LavehTime += shangbanshijian; + } + else if (EndTime >= EndTimeOffworkStart) + { + TimeSpan shangwu1 = EndTimeWorkingEnd.Subtract(EndTimeWorkingStart); + + TimeSpan xiawu1 = EndTime.Subtract(EndTimeOffworkStart); + + + LavehTime += shangwu1.Hours * 60 + shangwu1.Minutes + xiawu1.Hours * 60 + xiawu1.Minutes; + } + else if (EndTime >= EndTimeWorkingEnd) + { + + + + TimeSpan xiawu1 = EndTimeWorkingEnd.Subtract(EndTimeWorkingStart); + + + LavehTime += xiawu1.Hours * 60 + xiawu1.Minutes; + } + else if (EndTime >= EndTimeWorkingStart) + { + TimeSpan xiawu1 = EndTime.Subtract(EndTimeWorkingStart); + + + LavehTime += xiawu1.Hours * 60 + xiawu1.Minutes; + + } + + + + } + } + else + { + + //鏄惁璋冧紤鏃� 璋冧紤鏃ラ渶瑕佷笂鐝� + 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) + { + LavehTime += shangbanshijian; + } + else if (EndTime >= EndTimeOffworkStart) + { + TimeSpan shangwu1 = EndTimeWorkingEnd.Subtract(EndTimeWorkingStart); + + TimeSpan xiawu1 = EndTime.Subtract(EndTimeOffworkStart); + + + LavehTime += shangwu1.Hours * 60 + shangwu1.Minutes + xiawu1.Hours * 60 + xiawu1.Minutes; + } + else if (EndTime >= EndTimeWorkingEnd) + { + + + + TimeSpan xiawu1 = EndTimeWorkingEnd.Subtract(EndTimeWorkingStart); + + + LavehTime += xiawu1.Hours * 60 + xiawu1.Minutes; + } + else if (EndTime >= EndTimeWorkingStart) + { + TimeSpan xiawu1 = EndTime.Subtract(EndTimeWorkingStart); + + + LavehTime += xiawu1.Hours * 60 + xiawu1.Minutes; + + } + } + else + { + LavehTime += 0; + } + } + } + + + if (i != 0 && i != ts.Days) + { + DateTime dateTimenow = StratTime.AddDays(i).Date; + //鏄惁涓婄彮鏃ユ湡 + if ((int)dateTimenow.Date.DayOfWeek >= admAttendanceRuleDTO.WeekStart && (int)dateTimenow.Date.DayOfWeek <= admAttendanceRuleDTO.WeekEnd) + { + //鏄惁鍋囨湡 鍋囨湡涓嶄笂鐝� + if (jiejiari.Exists(x => x.ValueStart <= dateTimenow.Date && x.ValueEnd >= dateTimenow.Date)) + { + LavehTime += 0; + } + else + { + LavehTime += shangbanshijian; + } + } + else + { + + //鏄惁璋冧紤鏃� 璋冧紤鏃ラ渶瑕佷笂鐝� + 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 + { + LavehTime += 0; + } + } + } + + + if (ts.Days == 0) + { //鏄惁涓婄彮鏃ユ湡 + if ((int)StratTime.Date.DayOfWeek >= admAttendanceRuleDTO.WeekStart && (int)StratTime.Date.DayOfWeek <= admAttendanceRuleDTO.WeekEnd) + { + //鏄惁鑺傚亣鏃� + if (jiejiari.Exists(x => x.ValueStart <= StratTime.Date && x.ValueEnd >= StratTime.Date)) + { + LavehTime -= 0; + } + else + { + LavehTime -= shangbanshijian; + } + } + else + { + //鏄惁璋冧紤鏃� 璋冧紤鏃ラ渶瑕佷笂鐝� + 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; + } + else + { + LavehTime -= 0; + } + } + + } + + } + + + + + + + + + AdmAskLeaveDTO admAsk = new AdmAskLeaveDTO(); + admAsk.LaveDay = (int)(LavehTime / shangbanshijian); + int lefthour = (int)(LavehTime % shangbanshijian); + + admAsk.LavehHour = lefthour / 60; + if (lefthour % 60 > 0) + { + admAsk.LavehHour += 1; + } + + return admAsk; + } } } -- Gitblit v1.9.1