| | |
| | | using Microsoft.Extensions.Hosting; |
| | | using DTO; |
| | | using IServices; |
| | | using Microsoft.Extensions.DependencyInjection; |
| | | using Microsoft.Extensions.Hosting; |
| | | using Microsoft.Extensions.Logging; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.IO; |
| | | using System.Linq; |
| | | 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; |
| | | |
| | | public TimedBackgroundService(ILogger<TimedBackgroundService> logger) |
| | | private readonly decimal jiabangongzibiaozhun = new decimal(21.5); |
| | | public TimedBackgroundService(ILogger<TimedBackgroundService> logger, IServiceScopeFactory factory) |
| | | { |
| | | _logger = logger; |
| | | _attendanceRuleService = factory.CreateScope().ServiceProvider.GetRequiredService<IAdmAttendanceRuleService>(); |
| | | _userService = factory.CreateScope().ServiceProvider.GetRequiredService<IUserService>(); |
| | | _signinService = factory.CreateScope().ServiceProvider.GetRequiredService<IAdmSigninService>(); |
| | | _admAttendanceService = factory.CreateScope().ServiceProvider.GetRequiredService<IAdmAttendanceService>(); |
| | | _admAttendanceDtlService = factory.CreateScope().ServiceProvider.GetRequiredService<IAdmAttendanceDtlService>(); |
| | | _hrSalaryService = factory.CreateScope().ServiceProvider.GetRequiredService<IHrSalaryService>(); |
| | | _JibengongziService = factory.CreateScope().ServiceProvider.GetRequiredService<IHrJibengongziService>(); |
| | | _simService = factory.CreateScope().ServiceProvider.GetRequiredService<ISimService>(); |
| | | _DailyManageService = factory.CreateScope().ServiceProvider.GetRequiredService<IDailyManagementService>(); |
| | | _admBreakPrecedentService = factory.CreateScope().ServiceProvider.GetRequiredService<IAdmBreakPrecedentService>(); |
| | | _hrJixiaotichengService = factory.CreateScope().ServiceProvider.GetRequiredService<IHrJixiaotichengService>(); |
| | | _fiPiecerateService = factory.CreateScope().ServiceProvider.GetRequiredService<IFiPiecerateService>(); |
| | | _admPieceCheckService = factory.CreateScope().ServiceProvider.GetRequiredService<IAdmPieceCheckService>(); |
| | | _cooperOrderService = factory.CreateScope().ServiceProvider.GetRequiredService<ICooperOrderService>(); |
| | | _cooperatecustomCustomerService = factory.CreateScope().ServiceProvider.GetRequiredService<ICooperatecustomCustomerService>(); |
| | | _groupTopicService = factory.CreateScope().ServiceProvider.GetRequiredService<IGroupTopicService>(); |
| | | _cooperVisitService = factory.CreateScope().ServiceProvider.GetRequiredService<ICooperVisitService>(); |
| | | } |
| | | protected override async Task ExecuteAsync(CancellationToken stoppingToken) |
| | | { |
| | |
| | | while (!stoppingToken.IsCancellationRequested) |
| | | { |
| | | _logger.LogInformation("MyServiceA å¼å§æ§è¡"); |
| | | //æ¯å¤©ç0ç¹å¼å§è®¡ç® |
| | | if (DateTime.Now.Hour == 0) |
| | | //if (true) |
| | | { |
| | | try |
| | | { |
| | | DateTime diwutian = this.diwugongzuori(); |
| | | //第äºä¸ªå·¥ä½æ¥ç»æåå¼å§è®¡ç® |
| | | if (DateTime.Now.Date == diwutian.AddDays(1)) |
| | | //if (true) |
| | | { |
| | | try |
| | | { |
| | | //using (TransactionScope scope = new TransactionScope()) |
| | | //{ |
| | | this.jisuankaoqin(); |
| | | this.jisuangongzi(); |
| | | //scope.Complete(); |
| | | //} |
| | | |
| | | await Task.Delay(TimeSpan.FromMinutes(1), stoppingToken); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _logger.LogInformation(ex.ToString()); |
| | | } |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _logger.LogInformation(ex.ToString()); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | await Task.Delay(TimeSpan.FromMinutes(59), stoppingToken); |
| | | |
| | | _logger.LogInformation("ç»§ç»æ§è¡"); |
| | | } |
| | |
| | | { |
| | | 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; |
| | | } |
| | | |
| | | //计ç®èå¤ |
| | | 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(); |
| | | |
| | | //æ¯å¤©çè夿¶é´ç¹ |
| | | 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; |
| | | |
| | | //æ¥è¯¢ææçææäººå |
| | | List<PltUserDTO> userList = _userService.GetListjisuankaoqin(new DateTime(DateTime.Now.Year, DateTime.Now.Month - 1, 1), new DateTime(DateTime.Now.Year, DateTime.Now.Month - 1, 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(DateTime.Now.Year, DateTime.Now.Month - 1, 1); |
| | | DateTime datemaxkaoqin = dateminkaoqin.AddMonths(1); |
| | | List<AdmAskLeaveDTO> admAskLeaveDTOs = _signinService.GetAskLeaveByUserId(userList[a].Id); |
| | | List<AdmAskLeaveOffDTO> admAskLeaveOffDTOs = _signinService.GetAskLeaveOffByUserId(userList[a].Id); |
| | | //æå
¥èå¤ä¸»è¡¨ |
| | | AdmAttendanceDTO admAttendanceDTO = _admAttendanceService.GetByUserAndDate(userList[a].Id, dateminkaoqin.Year, dateminkaoqin.Month); |
| | | if (admAttendanceDTO == null) |
| | | { |
| | | admAttendanceDTO = new AdmAttendanceDTO(); |
| | | admAttendanceDTO.Userid = userList[a].Id; |
| | | admAttendanceDTO.Year = dateminkaoqin.Year; |
| | | admAttendanceDTO.Month = dateminkaoqin.Month; |
| | | admAttendanceDTO.Yingchuqin = 0; |
| | | admAttendanceDTO.Offdays = 0; |
| | | admAttendanceDTO.Shijichuqin = 0; |
| | | admAttendanceDTO.Qingjia = 0; |
| | | admAttendanceDTO.Jiaban = 0; |
| | | admAttendanceDTO.Xiaojia = 0; |
| | | admAttendanceDTO.Chidao = 0; |
| | | admAttendanceDTO.Zaotui = 0; |
| | | admAttendanceDTO.Kuanggong = 0; |
| | | admAttendanceDTO.Islock = "D"; |
| | | admAttendanceDTO.RecStatus = "A"; |
| | | admAttendanceDTO.Creater = "1"; |
| | | admAttendanceDTO.Modifier = "1"; |
| | | admAttendanceDTO.Createtime = DateTime.Now; |
| | | admAttendanceDTO.Modifytime = admAttendanceDTO.Createtime; |
| | | |
| | | resultEntity = _admAttendanceService.save(admAttendanceDTO); |
| | | if(resultEntity.Result == false) |
| | | { |
| | | throw new Exception("计ç®å¤±è´¥"); |
| | | } |
| | | } |
| | | int Yingchuqin = 0; |
| | | int Offdays = 0; |
| | | decimal Shijichuqin = 0; |
| | | decimal Qingjia = 0; |
| | | decimal Jiaban = 0; |
| | | decimal Chidao = 0; |
| | | decimal Zaotui = 0; |
| | | decimal Kuanggong = 0; |
| | | decimal Xiaojia = 0; |
| | | |
| | | while (dateminkaoqin < datemaxkaoqin) |
| | | { |
| | | _logger.LogInformation("dateminkaoqin " + dateminkaoqin); |
| | | bool iswork = false; |
| | | |
| | | //æ¯å¦ä¸çæ¥æ |
| | | if ((int)dateminkaoqin.DayOfWeek >= admAttendanceRuleDTO.WeekStart && (int)dateminkaoqin.DayOfWeek <= admAttendanceRuleDTO.WeekEnd) |
| | | { |
| | | //æ¯å¦è忥 |
| | | if (jiejiari.Exists(x => x.ValueStart <= dateminkaoqin && x.ValueEnd >= dateminkaoqin)) |
| | | { |
| | | Offdays += 1; |
| | | } |
| | | else |
| | | { |
| | | Yingchuqin += 1; |
| | | iswork = true; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | //æ¯å¦è°ä¼æ¥ è°ä¼æ¥éè¦ä¸ç |
| | | if (tiaoxiuri.Exists(x => x.ValueStart <= dateminkaoqin.Date && x.ValueEnd >= dateminkaoqin.Date)) |
| | | { |
| | | Yingchuqin += 1; |
| | | iswork = true; |
| | | } |
| | | else |
| | | { |
| | | Offdays += 1; |
| | | } |
| | | } |
| | | |
| | | if(userList[a].Outdate.HasValue && dateminkaoqin >=userList[a].Outdate ) |
| | | { |
| | | dateminkaoqin = dateminkaoqin.AddDays(1); |
| | | continue; |
| | | } |
| | | |
| | | if (userList[a].Indate.HasValue && dateminkaoqin < userList[a].Indate) |
| | | { |
| | | dateminkaoqin = dateminkaoqin.AddDays(1); |
| | | continue; |
| | | } |
| | | |
| | | //夿èå¤ç¶æ |
| | | AdmSignInDTO admSignInDTO = _signinService.GetByUserAndDate(userList[a].Id, dateminkaoqin); |
| | | if (admSignInDTO == null) |
| | | { |
| | | admSignInDTO = new AdmSignInDTO(); |
| | | } |
| | | //æ¥è¯¢è¯·å è¯·åæ¶é´ä¸è½éå |
| | | List<AdmAskLeaveDTO> admAskLeaveDTOMin = admAskLeaveDTOs.Where(x =>x.Lavetype != "2" && x.StratTime < dateminkaoqin.AddDays(1) && x.EndTime > dateminkaoqin).OrderByDescending(x=>x.Createtime).ToList(); |
| | | //æ¥è¯¢éå éåæ¶é´ä¸è½éå |
| | | List<AdmAskLeaveOffDTO> admAskLeaveOffDTOMin = admAskLeaveOffDTOs.Where(x => x.StratTime < dateminkaoqin.AddDays(1) && x.EndTime > dateminkaoqin).OrderByDescending(x => x.Createtime).ToList(); |
| | | |
| | | |
| | | //请åå¼å§æ¶é´ä¸çæ¶é´ |
| | | DateTime StratTimeWorkingStart = dateminkaoqin.Date.AddHours(WorkingStarthour).AddMinutes(WorkingStartmin); |
| | | |
| | | DateTime StratTimeWorkingEnd = dateminkaoqin.Date.AddHours(WorkingEndhour).AddMinutes(WorkingEndmin); |
| | | |
| | | DateTime StratTimeOffworkStart = dateminkaoqin.Date.AddHours(OffworkStarthour).AddMinutes(OffworkStartmin); |
| | | |
| | | DateTime StratTimeOffworkEnd = dateminkaoqin.Date.AddHours(OffworkEndhour).AddMinutes(OffworkEndmin); |
| | | |
| | | |
| | | |
| | | //ä¸çæ¶é´ |
| | | |
| | | TimeSpan shangwu = StratTimeWorkingEnd.Subtract(StratTimeWorkingStart); |
| | | |
| | | TimeSpan xiawu = StratTimeOffworkEnd.Subtract(StratTimeOffworkStart); |
| | | |
| | | |
| | | |
| | | |
| | | int shangbanshijian = shangwu.Hours * 60 + shangwu.Minutes + xiawu.Hours * 60 + xiawu.Minutes; |
| | | |
| | | decimal Shangwuchidaofenzhong = 0; |
| | | decimal Xiawuchidaofenzhong = 0; |
| | | decimal Shangwuzaotuifenzhong = 0; |
| | | decimal Xiawuzaotuifenzhong = 0; |
| | | decimal Kuanggongtianshu = 0; |
| | | decimal dangtianqingjia = 0; |
| | | decimal dangtianxiaojia = 0; |
| | | string Iswork = "D"; |
| | | if (iswork) |
| | | { |
| | | Iswork = "A"; |
| | | } |
| | | //æ¯å¦æ¯å·¥ä½æ¥ |
| | | if (iswork) |
| | | { |
| | | //夿è夿¶é´çè¿ç»æ§ |
| | | |
| | | //夿æ©ä¸æ¯å¦è¿å°,夿æ©ä¸æ¯å¦æ©éï¼æ©éç¿å·¥å¤ç |
| | | DateTime? starttime = null; |
| | | DateTime? endttime = null; |
| | | bool kuanggong = false; |
| | | List<DateBiJiaoDTO> dateBiJiaoDTOs = new List<DateBiJiaoDTO>(); |
| | | if (admSignInDTO != null && admSignInDTO.MorningIn.HasValue && admSignInDTO.MorningOut.HasValue) |
| | | { |
| | | DateBiJiaoDTO dateBiJiaoDTO = new DateBiJiaoDTO(); |
| | | dateBiJiaoDTO.StartTime = admSignInDTO.MorningIn; |
| | | dateBiJiaoDTO.EndTime = admSignInDTO.MorningOut; |
| | | dateBiJiaoDTOs.Add(dateBiJiaoDTO); |
| | | } |
| | | foreach (var admAskLeave in admAskLeaveDTOMin) |
| | | { |
| | | if(admAskLeave.StratTime< StratTimeWorkingEnd) |
| | | { |
| | | DateBiJiaoDTO dateBiJiaoDTO = new DateBiJiaoDTO(); |
| | | dateBiJiaoDTO.StartTime = admAskLeave.StratTime; |
| | | dateBiJiaoDTO.EndTime = admAskLeave.EndTime; |
| | | dateBiJiaoDTOs.Add(dateBiJiaoDTO); |
| | | } |
| | | |
| | | } |
| | | |
| | | foreach (var admAskLeaveOff in admAskLeaveOffDTOMin) |
| | | { |
| | | if (admAskLeaveOff.StratTime < StratTimeWorkingEnd) |
| | | { |
| | | DateBiJiaoDTO dateBiJiaoDTO = new DateBiJiaoDTO(); |
| | | dateBiJiaoDTO.StartTime = admAskLeaveOff.StratTime; |
| | | dateBiJiaoDTO.EndTime = admAskLeaveOff.EndTime; |
| | | dateBiJiaoDTOs.Add(dateBiJiaoDTO); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | dateBiJiaoDTOs = dateBiJiaoDTOs.OrderBy(x => x.StartTime).ToList(); |
| | | if (dateBiJiaoDTOs.Count == 0) |
| | | { |
| | | Kuanggong += new decimal(0.5); |
| | | Kuanggongtianshu += new decimal(0.5); |
| | | } |
| | | else |
| | | { |
| | | //夿ä¸åè夿¶é´æ¯å¦å
¨è¦ç |
| | | for (int i = 0; i < dateBiJiaoDTOs.Count; i++) |
| | | { |
| | | if (i == 0) |
| | | { |
| | | starttime = dateBiJiaoDTOs[i].StartTime; |
| | | endttime = dateBiJiaoDTOs[i].EndTime; |
| | | } |
| | | else |
| | | { |
| | | if (dateBiJiaoDTOs[i].StartTime > dateBiJiaoDTOs[i - 1].EndTime) |
| | | { |
| | | kuanggong = true; |
| | | break; |
| | | } |
| | | else if (dateBiJiaoDTOs[i].EndTime > dateBiJiaoDTOs[i - 1].EndTime) |
| | | { |
| | | endttime = dateBiJiaoDTOs[i].EndTime; |
| | | } |
| | | } |
| | | } |
| | | if (kuanggong) |
| | | { |
| | | Kuanggong += new decimal(0.5); |
| | | Kuanggongtianshu += new decimal(0.5); |
| | | } |
| | | else |
| | | { |
| | | decimal shangwukuanggong = 0; |
| | | if(starttime> StratTimeWorkingStart) |
| | | { |
| | | TimeSpan chidao = starttime.Value.Subtract(StratTimeWorkingStart); |
| | | if(chidao.Days>0 || ( chidao.Hours*60+ chidao.Minutes) > admAttendanceRuleDTO.Absenteeism) |
| | | { |
| | | if (shangwukuanggong == 0) |
| | | { |
| | | shangwukuanggong += new decimal(0.5); |
| | | Kuanggong += new decimal(0.5); |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | Chidao += 1; |
| | | Shangwuchidaofenzhong = chidao.Hours * 60 + chidao.Minutes; |
| | | } |
| | | } |
| | | if(shangwukuanggong ==0 && endttime < StratTimeWorkingEnd) |
| | | { |
| | | TimeSpan zaotui = StratTimeWorkingEnd.Subtract(endttime.Value); |
| | | if (zaotui.Days > 0 || (zaotui.Hours * 60 + zaotui.Minutes) > admAttendanceRuleDTO.Absenteeism) |
| | | { |
| | | if (shangwukuanggong == 0) |
| | | { |
| | | shangwukuanggong += new decimal(0.5); |
| | | Kuanggong += new decimal(0.5); |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | Zaotui += 1; |
| | | Shangwuzaotuifenzhong = zaotui.Hours * 60 + zaotui.Minutes; |
| | | } |
| | | |
| | | } |
| | | Kuanggongtianshu += shangwukuanggong; |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | //夿ä¸åæ¯å¦è¿å°,夿ä¸åæ¯å¦æ©éï¼æ©éç¿å·¥å¤ç |
| | | |
| | | |
| | | starttime = null; |
| | | endttime = null; |
| | | kuanggong = false; |
| | | dateBiJiaoDTOs = new List<DateBiJiaoDTO>(); |
| | | if (admSignInDTO != null && admSignInDTO.AfternoonIn.HasValue && admSignInDTO.AfternoonOut.HasValue) |
| | | { |
| | | DateBiJiaoDTO dateBiJiaoDTO = new DateBiJiaoDTO(); |
| | | dateBiJiaoDTO.StartTime = admSignInDTO.AfternoonIn; |
| | | dateBiJiaoDTO.EndTime = admSignInDTO.AfternoonOut; |
| | | dateBiJiaoDTOs.Add(dateBiJiaoDTO); |
| | | } |
| | | foreach (var admAskLeave in admAskLeaveDTOMin) |
| | | { |
| | | if (admAskLeave.EndTime > StratTimeOffworkStart) |
| | | { |
| | | DateBiJiaoDTO dateBiJiaoDTO = new DateBiJiaoDTO(); |
| | | dateBiJiaoDTO.StartTime = admAskLeave.StratTime; |
| | | dateBiJiaoDTO.EndTime = admAskLeave.EndTime; |
| | | dateBiJiaoDTOs.Add(dateBiJiaoDTO); |
| | | } |
| | | |
| | | } |
| | | foreach (var admAskLeaveOff in admAskLeaveOffDTOMin) |
| | | { |
| | | if (admAskLeaveOff.EndTime > StratTimeOffworkStart) |
| | | { |
| | | DateBiJiaoDTO dateBiJiaoDTO = new DateBiJiaoDTO(); |
| | | dateBiJiaoDTO.StartTime = admAskLeaveOff.StratTime; |
| | | dateBiJiaoDTO.EndTime = admAskLeaveOff.EndTime; |
| | | dateBiJiaoDTOs.Add(dateBiJiaoDTO); |
| | | } |
| | | |
| | | } |
| | | |
| | | dateBiJiaoDTOs = dateBiJiaoDTOs.OrderBy(x => x.StartTime).ToList(); |
| | | if (dateBiJiaoDTOs.Count == 0) |
| | | { |
| | | Kuanggong += new decimal(0.5); |
| | | Kuanggongtianshu += new decimal(0.5); |
| | | } |
| | | else |
| | | { |
| | | //夿ä¸åè夿¶é´æ¯å¦å
¨è¦ç |
| | | for (int i = 0; i < dateBiJiaoDTOs.Count; i++) |
| | | { |
| | | if (i == 0) |
| | | { |
| | | starttime = dateBiJiaoDTOs[i].StartTime; |
| | | endttime = dateBiJiaoDTOs[i].EndTime; |
| | | } |
| | | else |
| | | { |
| | | if (dateBiJiaoDTOs[i].StartTime > dateBiJiaoDTOs[i - 1].EndTime) |
| | | { |
| | | kuanggong = true; |
| | | break; |
| | | } |
| | | else if (dateBiJiaoDTOs[i].EndTime > dateBiJiaoDTOs[i - 1].EndTime) |
| | | { |
| | | endttime = dateBiJiaoDTOs[i].EndTime; |
| | | } |
| | | } |
| | | } |
| | | if (kuanggong) |
| | | { |
| | | Kuanggong += new decimal(0.5); |
| | | Kuanggongtianshu += new decimal(0.5); |
| | | } |
| | | else |
| | | { |
| | | decimal xiawuwukuanggong = 0; |
| | | if (starttime > StratTimeOffworkStart) |
| | | { |
| | | TimeSpan chidao = starttime.Value.Subtract(StratTimeOffworkStart); |
| | | if (chidao.Days > 0 || (chidao.Hours * 60 + chidao.Minutes) > admAttendanceRuleDTO.Absenteeism) |
| | | { |
| | | if (xiawuwukuanggong == 0) |
| | | { |
| | | xiawuwukuanggong += new decimal(0.5); |
| | | Kuanggong += new decimal(0.5); |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | Chidao += 1; |
| | | Xiawuchidaofenzhong = chidao.Hours * 60 + chidao.Minutes; |
| | | } |
| | | } |
| | | if (xiawuwukuanggong == 0 && endttime < StratTimeOffworkEnd) |
| | | { |
| | | TimeSpan zaotui = StratTimeOffworkEnd.Subtract(endttime.Value); |
| | | if (zaotui.Days > 0 || (zaotui.Hours * 60 + zaotui.Minutes) > admAttendanceRuleDTO.Absenteeism) |
| | | { |
| | | if (xiawuwukuanggong == 0) |
| | | { |
| | | xiawuwukuanggong += new decimal(0.5); |
| | | Kuanggong += new decimal(0.5); |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | Zaotui += 1; |
| | | Xiawuzaotuifenzhong = zaotui.Hours * 60 + zaotui.Minutes; |
| | | } |
| | | |
| | | } |
| | | Kuanggongtianshu += xiawuwukuanggong; |
| | | } |
| | | } |
| | | |
| | | |
| | | //计ç®å½å¤©è¯·å |
| | | List<DateBiJiaoDTO> qingjias = new List<DateBiJiaoDTO>(); |
| | | |
| | | var feichuqinjia = admAskLeaveDTOMin.Where(x => x.Lavetype != "4").ToList(); |
| | | foreach (var admAskLeave in feichuqinjia) |
| | | { |
| | | |
| | | DateBiJiaoDTO dateBiJiaoDTO = new DateBiJiaoDTO(); |
| | | dateBiJiaoDTO.StartTime = admAskLeave.StratTime; |
| | | dateBiJiaoDTO.EndTime = admAskLeave.EndTime; |
| | | qingjias.Add(dateBiJiaoDTO); |
| | | |
| | | } |
| | | |
| | | var feichuqinxiaojia = admAskLeaveOffDTOMin.Where(x => x.Lavetype == "2").ToList(); |
| | | foreach (var admAskLeaveOff in feichuqinxiaojia) |
| | | { |
| | | |
| | | DateBiJiaoDTO dateBiJiaoDTO = new DateBiJiaoDTO(); |
| | | dateBiJiaoDTO.StartTime = admAskLeaveOff.StratTime; |
| | | dateBiJiaoDTO.EndTime = admAskLeaveOff.EndTime; |
| | | qingjias.Add(dateBiJiaoDTO); |
| | | |
| | | } |
| | | |
| | | |
| | | foreach(var qingjia in qingjias) |
| | | { |
| | | if(qingjia.StartTime< StratTimeWorkingStart) |
| | | { |
| | | qingjia.StartTime = StratTimeWorkingStart; |
| | | } |
| | | if (qingjia.StartTime > StratTimeWorkingEnd && qingjia.StartTime < StratTimeOffworkStart) |
| | | { |
| | | qingjia.StartTime = StratTimeOffworkStart; |
| | | } |
| | | |
| | | |
| | | if (qingjia.EndTime > StratTimeWorkingEnd && qingjia.EndTime < StratTimeOffworkStart) |
| | | { |
| | | qingjia.EndTime = StratTimeWorkingEnd; |
| | | } |
| | | |
| | | |
| | | if (qingjia.EndTime > StratTimeOffworkEnd) |
| | | { |
| | | qingjia.EndTime = StratTimeOffworkEnd; |
| | | } |
| | | TimeSpan qingjiashiijan = qingjia.EndTime.Value.Subtract(qingjia.StartTime.Value); |
| | | if(qingjia.StartTime<= StratTimeWorkingEnd && qingjia.EndTime>= StratTimeOffworkStart) |
| | | { |
| | | TimeSpan wuxiushijian = StratTimeOffworkStart.Subtract(StratTimeWorkingEnd); |
| | | dangtianqingjia += Math.Round(((decimal)(qingjiashiijan.Hours * 60 + qingjiashiijan.Minutes- wuxiushijian.Hours * 60- wuxiushijian.Minutes)) / ((decimal)shangbanshijian), 2); |
| | | } |
| | | else |
| | | { |
| | | dangtianqingjia += Math.Round(((decimal)(qingjiashiijan.Hours * 60 + qingjiashiijan.Minutes)) / ((decimal)shangbanshijian), 2); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | Qingjia += dangtianqingjia; |
| | | //计ç®å½å¤©åºå¤å¤©æ° |
| | | Shijichuqin += (1 - Kuanggongtianshu - dangtianqingjia); |
| | | |
| | | |
| | | //计ç®éåï¼åºå·®ï¼è¡¥å¡ï¼ |
| | | List<DateBiJiaoDTO> xiaojias = new List<DateBiJiaoDTO>(); |
| | | |
| | | var xiaojiala = admAskLeaveOffDTOMin.Where(x => x.Lavetype != "2").ToList(); |
| | | foreach (var admAskLeaveOff in xiaojiala) |
| | | { |
| | | |
| | | DateBiJiaoDTO dateBiJiaoDTO = new DateBiJiaoDTO(); |
| | | dateBiJiaoDTO.StartTime = admAskLeaveOff.StratTime; |
| | | dateBiJiaoDTO.EndTime = admAskLeaveOff.EndTime; |
| | | xiaojias.Add(dateBiJiaoDTO); |
| | | |
| | | } |
| | | |
| | | foreach (var xiaojia in xiaojias) |
| | | { |
| | | if (xiaojia.StartTime < StratTimeWorkingStart) |
| | | { |
| | | xiaojia.StartTime = StratTimeWorkingStart; |
| | | } |
| | | if (xiaojia.StartTime > StratTimeWorkingEnd && xiaojia.StartTime < StratTimeOffworkStart) |
| | | { |
| | | xiaojia.StartTime = StratTimeOffworkStart; |
| | | } |
| | | |
| | | |
| | | if (xiaojia.EndTime > StratTimeWorkingEnd && xiaojia.EndTime < StratTimeOffworkStart) |
| | | { |
| | | xiaojia.EndTime = StratTimeWorkingEnd; |
| | | } |
| | | |
| | | |
| | | if (xiaojia.EndTime > StratTimeOffworkEnd) |
| | | { |
| | | xiaojia.EndTime = StratTimeOffworkEnd; |
| | | } |
| | | TimeSpan qingjiashiijan = xiaojia.EndTime.Value.Subtract(xiaojia.StartTime.Value); |
| | | if (xiaojia.StartTime <= StratTimeWorkingEnd && xiaojia.EndTime >= StratTimeOffworkStart) |
| | | { |
| | | TimeSpan wuxiushijian = StratTimeOffworkStart.Subtract(StratTimeWorkingEnd); |
| | | dangtianxiaojia += Math.Round(((decimal)(qingjiashiijan.Hours * 60 + qingjiashiijan.Minutes - wuxiushijian.Hours * 60 - wuxiushijian.Minutes)) / ((decimal)shangbanshijian), 2); |
| | | } |
| | | else |
| | | { |
| | | dangtianxiaojia += Math.Round(((decimal)(qingjiashiijan.Hours * 60 + qingjiashiijan.Minutes)) / ((decimal)shangbanshijian), 2); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | Xiaojia += dangtianxiaojia; |
| | | |
| | | |
| | | |
| | | //计ç®å çæ¶é´ |
| | | if (admSignInDTO != null && admSignInDTO.OvertimeIn.HasValue && admSignInDTO.OvertimeOut.HasValue) |
| | | { |
| | | DateTime overdate = admSignInDTO.OvertimeIn.Value; |
| | | if (admSignInDTO.OvertimeIn.Value< StratTimeOffworkEnd) |
| | | { |
| | | overdate = StratTimeOffworkEnd; |
| | | } |
| | | TimeSpan jiaban = admSignInDTO.OvertimeOut.Value.Subtract(overdate); |
| | | |
| | | Jiaban += Math.Round((decimal)(jiaban.Hours * 60) / (decimal)shangbanshijian, 2); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | //å ç |
| | | //计ç®å çæ¶é´ |
| | | if (admSignInDTO != null && admSignInDTO.OvertimeIn.HasValue && admSignInDTO.OvertimeOut.HasValue) |
| | | { |
| | | TimeSpan jiaban = admSignInDTO.OvertimeOut.Value.Subtract(admSignInDTO.OvertimeIn.Value); |
| | | |
| | | Jiaban += Math.Round((decimal)(jiaban.Hours * 60+ jiaban.Minutes) / (decimal)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 void jisuangongzi() |
| | | { |
| | | //æ¥è¯¢ææçææäººå |
| | | DateTime dateminkaoqin = new DateTime(DateTime.Now.Year, DateTime.Now.Month - 1, 1); |
| | | DateTime datemaxkaoqin = dateminkaoqin.AddMonths(1); |
| | | List<PltUserDTO> userList = _userService.GetListjisuankaoqin(dateminkaoqin, datemaxkaoqin);//.Where(x => x.UserSn == "yang").ToList(); |
| | | List<HrJibengongziDTO> hrJibengongziDTOs = _JibengongziService.GetList().Where(x=> x.Effecttime < datemaxkaoqin).ToList(); |
| | | List<SimBindView> simBindViews = _simService.GetBindSim().Where(x=>x.simstatus == "A").ToList(); |
| | | AdmAttendanceRuleDTO admAttendanceRuleDTO = _attendanceRuleService.Get(""); |
| | | |
| | | //æ¯å¤©çè夿¶é´ç¹ |
| | | string[] WorkingStart = admAttendanceRuleDTO.WorkingStart.Split('.'); |
| | | int WorkingStarthour = int.Parse(WorkingStart[0]); |
| | | int WorkingStartmin = int.Parse(WorkingStart[1]); |
| | | |
| | | string[] WorkingEnd = admAttendanceRuleDTO.WorkingEnd.Split('.'); |
| | | int WorkingEndhour = int.Parse(WorkingEnd[0]); |
| | | int WorkingEndmin = int.Parse(WorkingEnd[1]); |
| | | |
| | | string[] OffworkStart = admAttendanceRuleDTO.OffworkStart.Split('.'); |
| | | int OffworkStarthour = int.Parse(OffworkStart[0]); |
| | | int OffworkStartmin = int.Parse(OffworkStart[1]); |
| | | |
| | | string[] OffworkEnd = admAttendanceRuleDTO.OffworkEnd.Split('.'); |
| | | int OffworkEndhour = int.Parse(OffworkEnd[0]); |
| | | int OffworkEndmin = int.Parse(OffworkEnd[1]); |
| | | |
| | | List<FiPiecerateDTO> fiPiecerateDTOs = _fiPiecerateService.GetList(); |
| | | List<HrJixiaotichengDTO> hrJixiaotichengDTOs = _hrJixiaotichengService.GetList().Where(x => x.Effecttime < datemaxkaoqin).ToList(); |
| | | |
| | | for (int i = 0; i < userList.Count; i++) |
| | | { |
| | | _logger.LogInformation("å¼å§è®¡ç®" + userList[i].UserName + "å·¥èµ"); |
| | | HrSalaryDTO hrSalaryDTO = _hrSalaryService.GetListByUser(userList[i].Id, dateminkaoqin.Year, dateminkaoqin.Month); |
| | | if (hrSalaryDTO == null) |
| | | { |
| | | hrSalaryDTO = new HrSalaryDTO(); |
| | | hrSalaryDTO.Userid = userList[i].Id; |
| | | hrSalaryDTO.Year = dateminkaoqin.Year; |
| | | hrSalaryDTO.Month = dateminkaoqin.Month; |
| | | } |
| | | //æ¥è¯¢å½æèå¤ |
| | | AdmAttendanceDTO admAttendanceDTO = _admAttendanceService.GetByUserAndDate(userList[i].Id, dateminkaoqin.Year, dateminkaoqin.Month); |
| | | if (admAttendanceDTO == null) |
| | | { |
| | | _logger.LogInformation( userList[i].UserName + ":" + dateminkaoqin.Year+"å¹´"+ dateminkaoqin.Month + "ææ²¡ææ¥è¯¢å°èå¤"); |
| | | continue; |
| | | } |
| | | AdmAttendanceDtlDTOSearch searchEntity = new AdmAttendanceDtlDTOSearch(); |
| | | searchEntity.AttendanceId = admAttendanceDTO.Id; |
| | | List<AdmAttendanceDtlDTO> admAttendanceDtlDTOs = _admAttendanceDtlService.GetList(searchEntity).OrderBy(x => x.SgninDate).ToList(); |
| | | |
| | | //彿åºå¤ç |
| | | 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; |
| | | } |
| | | 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 = hrJibengongzi.Shebaodanwei.HasValue ? hrJibengongzi.Shebaodanwei.Value : 0; |
| | | var Shebaogeren = hrJibengongzi.Shebaogeren.HasValue ? hrJibengongzi.Shebaogeren.Value : 0; |
| | | decimal yingnashuie = 0; |
| | | hrSalaryDTO.Queqin = 0; |
| | | hrSalaryDTO.Gongzuobutie = 0; |
| | | hrSalaryDTO.Jiabangongzi = 0; |
| | | decimal shiyongqichuqintianshu = 0; |
| | | decimal shiyongqichuqinlv = 0; |
| | | |
| | | 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; |
| | | } |
| | | //è¯ç¨æçåºå¤ç |
| | | 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); |
| | | } |
| | | 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.Gongzuobutie += Math.Round( (userList[i].ShiyongPrice.Value - hrJibengongzi.Baomifei.Value- hrJibengongzi.Jibengongzi.Value ) * shiyongqichuqinlv, 2); |
| | | |
| | | |
| | | |
| | | //yingnashuie = userList[i].ShiyongPrice.Value - Shebaogeren - geshuiqizheng; |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | if(true) |
| | | { |
| | | decimal BasicPrice = 0; |
| | | if(!decimal.TryParse(userList[i].BasicPrice,out BasicPrice)) |
| | | { |
| | | _logger.LogInformation(userList[i].UserName + ": å工没æç»´æ¤å·¥èµ"); |
| | | continue; |
| | | } |
| | | //转æ£åçåºå¤ç |
| | | 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); |
| | | |
| | | |
| | | |
| | | //yingnashuie = BasicPrice - Shebaogeren - geshuiqizheng; |
| | | |
| | | |
| | | } |
| | | |
| | | //è¿å°æ©éæ£é± |
| | | //AdmAttendanceDtlDTOSearch searchEntity = new AdmAttendanceDtlDTOSearch(); |
| | | //searchEntity.AttendanceId = admAttendanceDTO.Id; |
| | | //List<AdmAttendanceDtlDTO> admAttendanceDtlDTOs = _admAttendanceDtlService.GetList(searchEntity).OrderBy(x => x.SgninDate).ToList(); |
| | | if (admAttendanceDtlDTOs.Count > 0) |
| | | { |
| | | for (int j = 0; j < admAttendanceDtlDTOs.Count; j++) |
| | | { |
| | | if (admAttendanceDtlDTOs[j].Shangwuchidaofenzhong > 0) |
| | | { |
| | | if (admAttendanceDtlDTOs[j].Shangwuchidaofenzhong < 15) |
| | | { |
| | | hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment1; |
| | | } |
| | | else if (admAttendanceDtlDTOs[j].Shangwuchidaofenzhong < 30) |
| | | { |
| | | hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment2; |
| | | } |
| | | else if (admAttendanceDtlDTOs[j].Shangwuchidaofenzhong < 60) |
| | | { |
| | | hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment3; |
| | | } |
| | | else if (admAttendanceDtlDTOs[j].Shangwuchidaofenzhong < 120) |
| | | { |
| | | hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment3; |
| | | } |
| | | |
| | | } |
| | | if (admAttendanceDtlDTOs[j].Shangwuzaotuifenzhong > 0) |
| | | { |
| | | if (admAttendanceDtlDTOs[j].Shangwuzaotuifenzhong < 15) |
| | | { |
| | | hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment1; |
| | | } |
| | | else if (admAttendanceDtlDTOs[j].Shangwuzaotuifenzhong < 30) |
| | | { |
| | | hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment2; |
| | | } |
| | | else if (admAttendanceDtlDTOs[j].Shangwuzaotuifenzhong < 60) |
| | | { |
| | | hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment3; |
| | | } |
| | | else if (admAttendanceDtlDTOs[j].Shangwuzaotuifenzhong < 120) |
| | | { |
| | | hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment3; |
| | | } |
| | | |
| | | } |
| | | if (admAttendanceDtlDTOs[j].Xiawuchidaofenzhong > 0) |
| | | { |
| | | if (admAttendanceDtlDTOs[j].Xiawuchidaofenzhong < 15) |
| | | { |
| | | hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment1; |
| | | } |
| | | else if (admAttendanceDtlDTOs[j].Xiawuchidaofenzhong < 30) |
| | | { |
| | | hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment2; |
| | | } |
| | | else if (admAttendanceDtlDTOs[j].Xiawuchidaofenzhong < 60) |
| | | { |
| | | hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment3; |
| | | } |
| | | else if (admAttendanceDtlDTOs[j].Xiawuchidaofenzhong < 120) |
| | | { |
| | | hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment3; |
| | | } |
| | | |
| | | } |
| | | if (admAttendanceDtlDTOs[j].Xiawuzaotuifenzhong > 0) |
| | | { |
| | | if (admAttendanceDtlDTOs[j].Xiawuzaotuifenzhong < 15) |
| | | { |
| | | hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment1; |
| | | } |
| | | else if (admAttendanceDtlDTOs[j].Xiawuzaotuifenzhong < 30) |
| | | { |
| | | hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment2; |
| | | } |
| | | else if (admAttendanceDtlDTOs[j].Xiawuzaotuifenzhong < 60) |
| | | { |
| | | hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment3; |
| | | } |
| | | else if (admAttendanceDtlDTOs[j].Xiawuzaotuifenzhong < 120) |
| | | { |
| | | hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment3; |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | } |
| | | //ç
åäºåæ£é± |
| | | List<AdmAskLeaveDTO> admAskLeaveDTOs = _signinService.GetAskLeaveByUserId(userList[i].Id).Where(x => x.Lavetype == "1" && ( (x.StratTime >= dateminkaoqin && x.StratTime < datemaxkaoqin) || (x.EndTime >= dateminkaoqin && x.EndTime < datemaxkaoqin) || (x.EndTime >= datemaxkaoqin && x.StratTime < dateminkaoqin) )).OrderByDescending(x => x.Createtime).ToList(); |
| | | |
| | | if(admAskLeaveDTOs!=null && admAskLeaveDTOs.Count > 0) |
| | | { |
| | | foreach(var admAskLeaveDTO in admAskLeaveDTOs) |
| | | { |
| | | DateTime? AskLeavestart = null; |
| | | DateTime? AskLeaveend = null; |
| | | if(admAskLeaveDTO.StratTime< dateminkaoqin) |
| | | { |
| | | AskLeavestart = dateminkaoqin.AddHours(WorkingStarthour).AddMinutes(WorkingStartmin); |
| | | } |
| | | else |
| | | { |
| | | AskLeavestart = admAskLeaveDTO.StratTime; |
| | | } |
| | | |
| | | if (admAskLeaveDTO.EndTime >= datemaxkaoqin) |
| | | { |
| | | AskLeaveend = dateminkaoqin.AddDays(-1).AddHours(OffworkEndhour).AddMinutes(OffworkEndmin); |
| | | } |
| | | else |
| | | { |
| | | AskLeaveend = admAskLeaveDTO.EndTime; |
| | | } |
| | | AdmAskLeaveDTO admAskLeaveDTO1 = jisianChecktime(AskLeavestart.Value, AskLeaveend.Value); |
| | | if (admAskLeaveDTO1.LaveDay.Value > 0 || admAskLeaveDTO1.LavehHour > 0) |
| | | { |
| | | if (admAskLeaveDTO1.LaveDay.Value >= 1) |
| | | { |
| | | hrSalaryDTO.Queqin += admAttendanceRuleDTO.PersonalPayment4; |
| | | } |
| | | else if (admAskLeaveDTO1.LaveDay.Value ==0 && admAskLeaveDTO1.LavehHour >2) |
| | | { |
| | | hrSalaryDTO.Queqin += admAttendanceRuleDTO.PersonalPayment3; |
| | | } |
| | | else if (admAskLeaveDTO1.LaveDay.Value == 0 && admAskLeaveDTO1.LavehHour > 1) |
| | | { |
| | | hrSalaryDTO.Queqin += admAttendanceRuleDTO.PersonalPayment2; |
| | | } |
| | | else if (admAskLeaveDTO1.LaveDay.Value == 0 && admAskLeaveDTO1.LavehHour ==1) |
| | | { |
| | | hrSalaryDTO.Queqin += admAttendanceRuleDTO.PersonalPayment1; |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | List<AdmAskLeaveOffDTO> admAskLeaveOffDTOs = _signinService.GetAskLeaveOffByUserId(userList[i].Id).Where(x => x.Lavetype == "2" && ((x.StratTime >= dateminkaoqin && x.StratTime < datemaxkaoqin) || (x.EndTime >= dateminkaoqin && x.EndTime < datemaxkaoqin) || (x.EndTime >= datemaxkaoqin && x.StratTime < dateminkaoqin) ) ).OrderByDescending(x => x.Createtime).ToList(); |
| | | if (admAskLeaveOffDTOs != null && admAskLeaveOffDTOs.Count > 0) |
| | | { |
| | | foreach (var admAskLeaveOffDTO in admAskLeaveOffDTOs) |
| | | { |
| | | DateTime? AskLeavestart = null; |
| | | DateTime? AskLeaveend = null; |
| | | if (admAskLeaveOffDTO.StratTime < dateminkaoqin) |
| | | { |
| | | AskLeavestart = dateminkaoqin.AddHours(WorkingStarthour).AddMinutes(WorkingStartmin); |
| | | } |
| | | else |
| | | { |
| | | AskLeavestart = admAskLeaveOffDTO.StratTime; |
| | | } |
| | | |
| | | if (admAskLeaveOffDTO.EndTime >= datemaxkaoqin) |
| | | { |
| | | AskLeaveend = dateminkaoqin.AddDays(-1).AddHours(OffworkEndhour).AddMinutes(OffworkEndmin); |
| | | } |
| | | else |
| | | { |
| | | AskLeaveend = admAskLeaveOffDTO.EndTime; |
| | | } |
| | | AdmAskLeaveDTO admAskLeaveDTO1 = jisianChecktime(AskLeavestart.Value, AskLeaveend.Value); |
| | | if (admAskLeaveDTO1.LaveDay.Value > 0 || admAskLeaveDTO1.LavehHour > 0) |
| | | { |
| | | if (admAskLeaveDTO1.LaveDay.Value >= 1) |
| | | { |
| | | hrSalaryDTO.Queqin += admAttendanceRuleDTO.SickPayment4; |
| | | } |
| | | else if (admAskLeaveDTO1.LaveDay.Value == 0 && admAskLeaveDTO1.LavehHour > 2) |
| | | { |
| | | hrSalaryDTO.Queqin += admAttendanceRuleDTO.SickPayment3; |
| | | } |
| | | else if (admAskLeaveDTO1.LaveDay.Value == 0 && admAskLeaveDTO1.LavehHour > 1) |
| | | { |
| | | hrSalaryDTO.Queqin += admAttendanceRuleDTO.SickPayment2; |
| | | } |
| | | else if (admAskLeaveDTO1.LaveDay.Value == 0 && admAskLeaveDTO1.LavehHour == 1) |
| | | { |
| | | hrSalaryDTO.Queqin += admAttendanceRuleDTO.SickPayment1; |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | if(userList[i].IsGmsb != "D" && userList[i].Shebaodate.HasValue && userList[i].Shebaodate.Value < datemaxkaoqin) |
| | | { |
| | | hrSalaryDTO.Shebao = Shebaodanwei; |
| | | hrSalaryDTO.Shebaokou = Shebaodanwei + Shebaogeren; |
| | | } |
| | | else |
| | | { |
| | | hrSalaryDTO.Shebao = 0; |
| | | hrSalaryDTO.Shebaokou = 0; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | var simBind = simBindViews.Where(x => x.userid == userList[i].Id).FirstOrDefault(); |
| | | if (simBind != null) |
| | | { |
| | | decimal cardpro = 0; |
| | | decimal.TryParse(simBind.cardpro, out cardpro); |
| | | hrSalaryDTO.Dianhuabutie = cardpro; |
| | | } |
| | | var SimCost = _simService.GetSimCost(userList[i].Id, dateminkaoqin.Year, dateminkaoqin.Month); |
| | | if (SimCost != null) |
| | | { |
| | | hrSalaryDTO.Dianhuafei = SimCost.bill_amount; |
| | | } |
| | | |
| | | |
| | | |
| | | hrSalaryDTO.Quanqinjiang = hrJibengongzi.Quanqingjiang; |
| | | if ("A".Equals(userList[i].Istravelsubsidy)) |
| | | { |
| | | hrSalaryDTO.Jiaotngbutie = hrJibengongzi.Jiaotongbutie; |
| | | } |
| | | //hrSalaryDTO.Jiangjin |
| | | //hrSalaryDTO.Bufagongzi |
| | | //hrSalaryDTO.Peichang |
| | | |
| | | |
| | | |
| | | |
| | | hrSalaryDTO.Fakuan = 0; |
| | | //å·¥ä½å®æç½æ¬¾ |
| | | List<AdmMemoBookDTO> admMemoBookDTOs = _DailyManageService.GetRemindsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin,"2"); |
| | | if (admMemoBookDTOs.Count > 0) |
| | | { |
| | | for(int j=0; j< admMemoBookDTOs.Count; j++) |
| | | { |
| | | decimal fakuanshumu = 0; |
| | | if (decimal.TryParse(admMemoBookDTOs[j].ZhuiZe, out fakuanshumu)) |
| | | { |
| | | hrSalaryDTO.Fakuan += fakuanshumu; |
| | | } |
| | | } |
| | | } |
| | | //è¿çºªå¤çç½æ¬¾ |
| | | List<AdmBreakPrecedentDTO> admBreakPrecedentDTOs = _admBreakPrecedentService.GetList(userList[i].Id, dateminkaoqin, datemaxkaoqin); |
| | | if (admBreakPrecedentDTOs.Count > 0) |
| | | { |
| | | for (int j = 0; j < admBreakPrecedentDTOs.Count; j++) |
| | | { |
| | | |
| | | if (admBreakPrecedentDTOs[j].Chufajine.HasValue) |
| | | { |
| | | hrSalaryDTO.Fakuan += admBreakPrecedentDTOs[j].Chufajine.Value; ; |
| | | } |
| | | } |
| | | } |
| | | |
| | | //hrSalaryDTO.Jiucuo |
| | | |
| | | //计ç®ç»©æææ |
| | | 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 cooperVisitDTOs = _cooperVisitService.GetListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin); |
| | | if (cooperVisitDTOs != null && cooperVisitDTOs.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 = 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 = cooperVisitDTOs.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.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 = 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 cooperatecustomCustomerDTOs = _cooperatecustomCustomerService.GetListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin); |
| | | if (cooperatecustomCustomerDTOs != null && cooperatecustomCustomerDTOs.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 = cooperatecustomCustomerDTOs.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 = cooperatecustomCustomerDTOs.Count - renwujishu; |
| | | if (youxiaojijian > 0) |
| | | { |
| | | hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | |
| | | #region å½å
¥å®¢æ·ç¾å |
| | | |
| | | var cooperatecustomCustomers = _cooperatecustomCustomerService.GetListsalaryqiandan(userList[i].Id, dateminkaoqin, datemaxkaoqin); |
| | | if (cooperatecustomCustomers != null && cooperatecustomCustomers.Count > 0) |
| | | { |
| | | var jijianidddd = fiPiecerateDTOs.Where(x => x.Standard == "D" && x.Project == "å½å
¥å®¢æ·ç¾å").FirstOrDefault(); |
| | | if (jijianidddd != null) |
| | | { |
| | | var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianidddd.Id).OrderByDescending(x => x.Effecttime).FirstOrDefault(); |
| | | if (jixiaotichengfangan != null && jixiaotichengfangan.Ticheng.HasValue && jixiaotichengfangan.Renwu.HasValue) |
| | | { |
| | | if (jixiaotichengfangan.Renwustandard == "01") |
| | | { |
| | | decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value; |
| | | if (jixiaotichengfangan.Tichengstandard == "01") |
| | | { |
| | | decimal youxiaojijian = cooperatecustomCustomers.Count - renwujishu; |
| | | if (youxiaojijian > 0) |
| | | { |
| | | hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | else if (jixiaotichengfangan.Renwustandard == "02") |
| | | { |
| | | decimal renwujishu = jixiaotichengfangan.Renwu.Value; |
| | | if (jixiaotichengfangan.Tichengstandard == "01") |
| | | { |
| | | decimal youxiaojijian = cooperatecustomCustomers.Count - renwujishu; |
| | | if (youxiaojijian > 0) |
| | | { |
| | | hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2); |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | |
| | | #region 计件ç»è®° |
| | | var pieceCheckDTOs = _admPieceCheckService.GetList(userList[i].Id, dateminkaoqin, datemaxkaoqin); |
| | | if (pieceCheckDTOs != null && pieceCheckDTOs.Count > 0) |
| | | { |
| | | foreach (var pieceCheckDTO in pieceCheckDTOs) |
| | | { |
| | | if (pieceCheckDTO.Gongzi.HasValue) |
| | | { |
| | | hrSalaryDTO.Jixiaoticheng += pieceCheckDTO.Gongzi.Value; |
| | | } |
| | | |
| | | } |
| | | } |
| | | #endregion |
| | | //åä½å®¢æ·è®¢å |
| | | List<CooperOrderDTO> cooperOrderDTOs = _cooperOrderService.GetList(userList[i].Id, dateminkaoqin, datemaxkaoqin); |
| | | |
| | | #region å¾ä¹¦éå® |
| | | var cooperOrdertushu = cooperOrderDTOs.Where(x => x.OrderType == "01").ToList(); |
| | | var jijianid = fiPiecerateDTOs.Where(x => x.Standard == "D" && 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 - dingdanyouhuizhenshi - 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 - dingdanyouhuizhenshi - 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.Standard == "D" && 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 - dingdanyouhuizhenshi - 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 - dingdanyouhuizhenshi - 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.Standard == "D" && 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 - dingdanyouhuizhenshi - 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 - dingdanyouhuizhenshi - 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.Standard == "D" && 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 - dingdanyouhuizhenshi - 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 - dingdanyouhuizhenshi - 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").ToList(); |
| | | jijianid = fiPiecerateDTOs.Where(x => x.Standard == "D" && 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 - dingdanyouhuizhenshi - 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 - dingdanyouhuizhenshi - 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.Standard == "D" && 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 - dingdanyouhuizhenshi - 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 - dingdanyouhuizhenshi - 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.Standard == "D" && 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 - dingdanyouhuizhenshi - 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 - dingdanyouhuizhenshi - 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.Standard == "D" && 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 - dingdanyouhuizhenshi - 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 - dingdanyouhuizhenshi - 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.Standard == "D" && 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 - dingdanyouhuizhenshi - 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 - dingdanyouhuizhenshi - 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.Standard == "D" && 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 - dingdanyouhuizhenshi - 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 - dingdanyouhuizhenshi - renwujishu; |
| | | if (youxiaojijian > 0) |
| | | { |
| | | hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 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; |
| | | |
| | | yingnashuie = jibengongzi + baomifei + gongzuobutie + jiabangongzi + shebao + dianhuabutie + quanqinjiang + jiaotngbutie + jixiaoticheng + jiangjin + bufagongzi - shebaokou - dianhuafei - queqin - fakuan - peichang + jiucuo - geshuiqizheng; |
| | | |
| | | |
| | | hrSalaryDTO.Geshui = 0; |
| | | if (yingnashuie > 0) |
| | | { |
| | | decimal yingnashuie1 = 0; |
| | | decimal yingnashuie2 = 0; |
| | | decimal yingnashuie3 = 0; |
| | | decimal yingnashuie4 = 0; |
| | | decimal yingnashuie5 = 0; |
| | | if (yingnashuie > 39250) |
| | | { |
| | | yingnashuie1 = 4750; |
| | | yingnashuie2 = (9250 - 4750); |
| | | yingnashuie3 = (25250 - 9250); |
| | | yingnashuie4 = (39250 - 25250); |
| | | yingnashuie5 = (yingnashuie - 39250); |
| | | } |
| | | else if (yingnashuie > 25250) |
| | | { |
| | | yingnashuie1 = 4750; |
| | | yingnashuie2 = (9250 - 4750); |
| | | yingnashuie3 = (25250 - 9250); |
| | | yingnashuie4 = (yingnashuie - 25250); |
| | | |
| | | } |
| | | else if (yingnashuie > 9250) |
| | | { |
| | | yingnashuie1 = 4750; |
| | | yingnashuie2 = (9250 - 4750); |
| | | yingnashuie3 = (yingnashuie - 9250); |
| | | } |
| | | else if (yingnashuie > 4750) |
| | | { |
| | | yingnashuie1 = 4750; |
| | | yingnashuie2 = (yingnashuie - 4750); |
| | | } |
| | | else |
| | | { |
| | | yingnashuie1 = yingnashuie; |
| | | } |
| | | if (yingnashuie1 > 0) |
| | | { |
| | | var yingjiao1 = Math.Round(yingnashuie1 * new decimal(0.05) - 0, 2); |
| | | if (yingjiao1 > 0) |
| | | { |
| | | hrSalaryDTO.Geshui += yingjiao1; |
| | | } |
| | | |
| | | } |
| | | if (yingnashuie2 > 0) |
| | | { |
| | | var yingjiao2 = Math.Round(yingnashuie2 * new decimal(0.1) - 250, 2); |
| | | if (yingjiao2 > 0) |
| | | { |
| | | hrSalaryDTO.Geshui += yingjiao2; |
| | | } |
| | | } |
| | | if (yingnashuie3 > 0) |
| | | { |
| | | var yingjiao3 = Math.Round(yingnashuie3 * new decimal(0.2) - 1250, 2); |
| | | if (yingjiao3 > 0) |
| | | { |
| | | hrSalaryDTO.Geshui += yingjiao3; |
| | | } |
| | | } |
| | | if (yingnashuie4 > 0) |
| | | { |
| | | var yingjiao4 = Math.Round(yingnashuie4 * new decimal(0.3) - 4250, 2); |
| | | if (yingjiao4 > 0) |
| | | { |
| | | hrSalaryDTO.Geshui += yingjiao4; |
| | | } |
| | | } |
| | | if (yingnashuie5 > 0) |
| | | { |
| | | var yingjiao5 = Math.Round(yingnashuie5 * new decimal(0.35) - 6750, 2); |
| | | if (yingjiao5 > 0) |
| | | { |
| | | hrSalaryDTO.Geshui += yingjiao5; |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | decimal geshui = hrSalaryDTO.Geshui.HasValue ? hrSalaryDTO.Geshui.Value : 0; |
| | | |
| | | hrSalaryDTO.Daozhanggongzi += jibengongzi + baomifei + gongzuobutie + jiabangongzi + shebao + dianhuabutie + quanqinjiang + jiaotngbutie + jixiaoticheng + jiangjin + bufagongzi - shebaokou - geshui - dianhuafei - queqin - fakuan - peichang + jiucuo; |
| | | |
| | | |
| | | |
| | | hrSalaryDTO.Yufagongzi = userList[i].advancewages; |
| | | |
| | | if (userList[i].advancewages.HasValue) |
| | | { |
| | | 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; |
| | | } |
| | | |
| | | hrSalaryDTO.Yufagongziheji += (hrSalaryDTO.Daozhanggongzi- hrSalaryDTO.Yufagongzi); |
| | | } |
| | | 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 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(); |
| | | |
| | | //æ¯å¤©çè夿¶é´ç¹ |
| | | 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)) |
| | | { |
| | | 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)) |
| | | { |
| | | 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 <= StratTime.Date && x.ValueEnd >= StratTime.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)) |
| | | { |
| | | 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; |
| | | } |
| | | } |
| | | } |