using 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; private readonly decimal jiabangongzibiaozhun = new decimal(21.5); public TimedBackgroundService(ILogger logger, IServiceScopeFactory factory) { _logger = logger; _attendanceRuleService = factory.CreateScope().ServiceProvider.GetRequiredService(); _userService = factory.CreateScope().ServiceProvider.GetRequiredService(); _signinService = factory.CreateScope().ServiceProvider.GetRequiredService(); _admAttendanceService = factory.CreateScope().ServiceProvider.GetRequiredService(); _admAttendanceDtlService = factory.CreateScope().ServiceProvider.GetRequiredService(); _hrSalaryService = factory.CreateScope().ServiceProvider.GetRequiredService(); _JibengongziService = factory.CreateScope().ServiceProvider.GetRequiredService(); _simService = factory.CreateScope().ServiceProvider.GetRequiredService(); _DailyManageService = factory.CreateScope().ServiceProvider.GetRequiredService(); _admBreakPrecedentService = factory.CreateScope().ServiceProvider.GetRequiredService(); _hrJixiaotichengService = factory.CreateScope().ServiceProvider.GetRequiredService(); _fiPiecerateService = factory.CreateScope().ServiceProvider.GetRequiredService(); _admPieceCheckService = factory.CreateScope().ServiceProvider.GetRequiredService(); _cooperOrderService = factory.CreateScope().ServiceProvider.GetRequiredService(); _cooperatecustomCustomerService = factory.CreateScope().ServiceProvider.GetRequiredService(); _groupTopicService = factory.CreateScope().ServiceProvider.GetRequiredService(); _cooperVisitService = factory.CreateScope().ServiceProvider.GetRequiredService(); _intentionCustomerService = factory.CreateScope().ServiceProvider.GetRequiredService(); _intentionVisitService = factory.CreateScope().ServiceProvider.GetRequiredService(); _projectService = factory.CreateScope().ServiceProvider.GetRequiredService(); _cusFangwenjiluService = factory.CreateScope().ServiceProvider.GetRequiredService(); _liaotianService = factory.CreateScope().ServiceProvider.GetRequiredService(); _dtChannelArticleNewsService = factory.CreateScope().ServiceProvider.GetRequiredService(); _configuration = factory.CreateScope().ServiceProvider.GetRequiredService(); _clientFactory = factory.CreateScope().ServiceProvider.GetRequiredService(); _askService= factory.CreateScope().ServiceProvider.GetRequiredService(); _admEvaluateService = factory.CreateScope().ServiceProvider.GetRequiredService(); _expertService = factory.CreateScope().ServiceProvider.GetRequiredService(); } protected override async Task ExecuteAsync(CancellationToken stoppingToken) { _logger.LogInformation("MyServiceA is starting."); //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) { try { _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(); } _logger.LogInformation("把超过90天还没有转化的档案客户的业务经理归为无"); this.ywjlguiling(); _logger.LogInformation("把超过90天还没有转化的档案客户的业务经理归为无执行结束"); } catch (Exception ex) { _logger.LogInformation(ex.ToString()); } datenow = DateTime.Now.Date.AddDays(1); } await Task.Delay(TimeSpan.FromMinutes(10), stoppingToken); _logger.LogInformation("继续执行"); } _logger.LogInformation("MyServiceA background task is stopping."); } public override void Dispose() { 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 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 admAskLeaveDTOs = _signinService.GetAskLeaveByUserId(userList[a].Id); List 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 admAskLeaveDTOMin = admAskLeaveDTOs.Where(x =>/*x.Lavetype != "2" &&*/ x.StratTime < dateminkaoqin.AddDays(1) && x.EndTime > dateminkaoqin).OrderByDescending(x=>x.Createtime).ToList(); //查询销假 销假时间不能重叠 List 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 dateBiJiaoDTOs = new List(); 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(); 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 qingjias = new List(); 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 xiaojias = new List(); 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 dateBiJiaoDTOs = new List(); 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(); 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 qingjias = new List(); 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 xiaojias = new List(); 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 userList = _userService.GetListjisuankaoqin(dateminkaoqin, datemaxkaoqin);//.Where(x => x.UserSn == "yang").ToList(); List hrJibengongziDTOs = _JibengongziService.GetList().Where(x=> x.Effecttime < datemaxkaoqin).ToList(); List 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 fiPiecerateDTOs = _fiPiecerateService.GetList(); List 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 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 { //矿工扣钱 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); } //迟到早退扣钱 //AdmAttendanceDtlDTOSearch searchEntity = new AdmAttendanceDtlDTOSearch(); //searchEntity.AttendanceId = admAttendanceDTO.Id; //List 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; } } } } //病假事假扣钱 List 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 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 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 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 zhucehuiyuansyue = new List(); 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>(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 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 cooperOrdertushuyouxiao = new List(); 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 风险代理 cooperOrdertushu = cooperOrderDTOs.Where(x => x.OrderType == "08").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 == "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 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; } } }