From efad4f05e52c89f3b42774e313144abd039370e4 Mon Sep 17 00:00:00 2001 From: username@email.com <yzy2002yzy@163.com> Date: 星期五, 10 二月 2023 11:26:06 +0800 Subject: [PATCH] 考勤怎么加带薪假的计算 --- zhengcaioa/Services/AdmAttendanceDtlService.cs | 5 + zhengcaioa/zhengcaioa/Views/AdmAttendance/Index.cshtml | 1 zhengcaioa/zhengcaioa/Timer/TimedBackgroundService.cs | 123 ++++++++++++++++++++++++++++++++++++++++ zhengcaioa/DTO/AdmAttendanceDTO.cs | 1 zhengcaioa/zhengcaioa/Views/AdmAttendance/IndexDtl.cshtml | 2 zhengcaioa/Model/AdmAttendanceDtl.cs | 1 zhengcaioa/DTO/AdmAttendanceDtlDTO.cs | 2 zhengcaioa/Model/AdmAttendance.cs | 1 zhengcaioa/Model/zhengcaioaContext.cs | 10 +++ zhengcaioa/Services/AdmAttendanceService.cs | 4 + 10 files changed, 144 insertions(+), 6 deletions(-) diff --git a/zhengcaioa/DTO/AdmAttendanceDTO.cs b/zhengcaioa/DTO/AdmAttendanceDTO.cs index a6e445e..1f52db8 100644 --- a/zhengcaioa/DTO/AdmAttendanceDTO.cs +++ b/zhengcaioa/DTO/AdmAttendanceDTO.cs @@ -27,6 +27,7 @@ public DateTime Createtime { get; set; } public string Modifier { get; set; } public DateTime Modifytime { get; set; } + public decimal? Daixinjia { get; set; } } diff --git a/zhengcaioa/DTO/AdmAttendanceDtlDTO.cs b/zhengcaioa/DTO/AdmAttendanceDtlDTO.cs index 7376c03..58d17e7 100644 --- a/zhengcaioa/DTO/AdmAttendanceDtlDTO.cs +++ b/zhengcaioa/DTO/AdmAttendanceDtlDTO.cs @@ -28,7 +28,7 @@ public decimal Xiawuzaotuifenzhong { get; set; } public decimal Kuanggongtianshu { get; set; } public string Iswork { get; set; } - + public decimal? Daixinjia { get; set; } public string SgninDateName { get; set; } public string MorningInName { get; set; } diff --git a/zhengcaioa/Model/AdmAttendance.cs b/zhengcaioa/Model/AdmAttendance.cs index a983837..f9d2e37 100644 --- a/zhengcaioa/Model/AdmAttendance.cs +++ b/zhengcaioa/Model/AdmAttendance.cs @@ -26,5 +26,6 @@ public DateTime Createtime { get; set; } public string Modifier { get; set; } public DateTime Modifytime { get; set; } + public decimal? Daixinjia { get; set; } } } diff --git a/zhengcaioa/Model/AdmAttendanceDtl.cs b/zhengcaioa/Model/AdmAttendanceDtl.cs index 9804a04..2080d52 100644 --- a/zhengcaioa/Model/AdmAttendanceDtl.cs +++ b/zhengcaioa/Model/AdmAttendanceDtl.cs @@ -30,5 +30,6 @@ public decimal Kuanggongtianshu { get; set; } public string Iswork { get; set; } + public decimal? Daixinjia { get; set; } } } diff --git a/zhengcaioa/Model/zhengcaioaContext.cs b/zhengcaioa/Model/zhengcaioaContext.cs index fdf849e..9b1addc 100644 --- a/zhengcaioa/Model/zhengcaioaContext.cs +++ b/zhengcaioa/Model/zhengcaioaContext.cs @@ -1030,6 +1030,11 @@ .HasColumnType("decimal(18, 4)") .HasColumnName("kuanggong"); + entity.Property(e => e.Daixinjia) + .HasColumnType("decimal(18, 4)") + .HasColumnName("daixinjia") + .HasDefaultValueSql("(0)"); + entity.Property(e => e.Modifier) .IsRequired() .HasMaxLength(50) @@ -1137,6 +1142,11 @@ .HasColumnType("decimal(18, 4)") .HasColumnName("qingjia"); + entity.Property(e => e.Daixinjia) + .HasColumnType("decimal(18, 4)") + .HasColumnName("daixinjia") + .HasDefaultValueSql("(0)"); + entity.Property(e => e.RecStatus) .IsRequired() .HasMaxLength(1) diff --git a/zhengcaioa/Services/AdmAttendanceDtlService.cs b/zhengcaioa/Services/AdmAttendanceDtlService.cs index ed6dbd0..221bf05 100644 --- a/zhengcaioa/Services/AdmAttendanceDtlService.cs +++ b/zhengcaioa/Services/AdmAttendanceDtlService.cs @@ -58,6 +58,7 @@ updatepltRole.Xiawuzaotuifenzhong = AdmAttendanceDtl.Xiawuzaotuifenzhong; updatepltRole.Kuanggongtianshu = AdmAttendanceDtl.Kuanggongtianshu; updatepltRole.Iswork = AdmAttendanceDtl.Iswork; + updatepltRole.Daixinjia = AdmAttendanceDtl.Daixinjia; } } @@ -156,7 +157,7 @@ Createtime = a.Createtime, Modifier = a.Modifier, Modifytime = a.Modifytime, - + Daixinjia = a.Daixinjia, Shangwuchidaofenzhong = a.Shangwuchidaofenzhong, Xiawuchidaofenzhong = a.Xiawuchidaofenzhong, Shangwuzaotuifenzhong = a.Shangwuzaotuifenzhong, @@ -193,7 +194,7 @@ AttendanceId = a.AttendanceId, SgninDate = a.SgninDate, MorningIn = a.MorningIn, - + Daixinjia = a.Daixinjia, MorningOut = a.MorningOut, AfternoonIn = a.AfternoonIn, AfternoonOut = a.AfternoonOut, diff --git a/zhengcaioa/Services/AdmAttendanceService.cs b/zhengcaioa/Services/AdmAttendanceService.cs index d536dad..58c498f 100644 --- a/zhengcaioa/Services/AdmAttendanceService.cs +++ b/zhengcaioa/Services/AdmAttendanceService.cs @@ -54,7 +54,7 @@ updatepltRole.Createtime = AdmAttendance.Createtime; updatepltRole.Modifier = AdmAttendance.Modifier; updatepltRole.Modifytime = AdmAttendance.Modifytime; - + updatepltRole.Daixinjia = AdmAttendance.Daixinjia; updatepltRole.Chidao = AdmAttendance.Chidao; updatepltRole.Zaotui = AdmAttendance.Zaotui; updatepltRole.Kuanggong = AdmAttendance.Kuanggong; @@ -133,6 +133,7 @@ Shijichuqin = a.Shijichuqin, Qingjia = a.Qingjia, Jiaban = a.Jiaban, + Daixinjia = a.Daixinjia, Xiaojia = a.Xiaojia, Islock = a.Islock, RecStatus = a.RecStatus, @@ -212,6 +213,7 @@ Shijichuqin = a.Shijichuqin, Qingjia = a.Qingjia, Jiaban = a.Jiaban, + Daixinjia = a.Daixinjia, Xiaojia = a.Xiaojia, Islock = a.Islock, RecStatus = a.RecStatus, diff --git a/zhengcaioa/zhengcaioa/Timer/TimedBackgroundService.cs b/zhengcaioa/zhengcaioa/Timer/TimedBackgroundService.cs index f91384a..d200c1b 100644 --- a/zhengcaioa/zhengcaioa/Timer/TimedBackgroundService.cs +++ b/zhengcaioa/zhengcaioa/Timer/TimedBackgroundService.cs @@ -341,6 +341,7 @@ admAttendanceDTO.Qingjia = 0; admAttendanceDTO.Jiaban = 0; admAttendanceDTO.Xiaojia = 0; + admAttendanceDTO.Daixinjia = 0; admAttendanceDTO.Chidao = 0; admAttendanceDTO.Zaotui = 0; admAttendanceDTO.Kuanggong = 0; @@ -366,6 +367,7 @@ decimal Zaotui = 0; decimal Kuanggong = 0; decimal Xiaojia = 0; + decimal Daixinjia = 0; while (dateminkaoqin < datemaxkaoqin) { @@ -453,6 +455,8 @@ decimal Kuanggongtianshu = 0; decimal dangtianqingjia = 0; decimal dangtianxiaojia = 0; + decimal dangtiandaixinjia = 0; + string Iswork = "D"; if (iswork) { @@ -768,6 +772,63 @@ } Qingjia += dangtianqingjia; + + + + //璁$畻褰撳ぉ甯﹁柂鍋� + List<DateBiJiaoDTO> daixinjias = new List<DateBiJiaoDTO>(); + + var chauxndaixinjias = admAskLeaveDTOMin.Where(x => x.Lavetype == "4" || x.Lavetype == "7" || x.Lavetype == "3" || x.Lavetype == "9").ToList(); + foreach (var admAskLeave in chauxndaixinjias) + { + + DateBiJiaoDTO dateBiJiaoDTO = new DateBiJiaoDTO(); + dateBiJiaoDTO.StartTime = admAskLeave.StratTime; + dateBiJiaoDTO.EndTime = admAskLeave.EndTime; + daixinjias.Add(dateBiJiaoDTO); + + } + + foreach (var daixinjia in daixinjias) + { + if (daixinjia.StartTime < StratTimeWorkingStart) + { + daixinjia.StartTime = StratTimeWorkingStart; + } + if (daixinjia.StartTime > StratTimeWorkingEnd && daixinjia.StartTime < StratTimeOffworkStart) + { + daixinjia.StartTime = StratTimeOffworkStart; + } + + + if (daixinjia.EndTime > StratTimeWorkingEnd && daixinjia.EndTime < StratTimeOffworkStart) + { + daixinjia.EndTime = StratTimeWorkingEnd; + } + + + if (daixinjia.EndTime > StratTimeOffworkEnd) + { + daixinjia.EndTime = StratTimeOffworkEnd; + } + TimeSpan daixinjiashiijan = daixinjia.EndTime.Value.Subtract(daixinjia.StartTime.Value); + if (daixinjia.StartTime <= StratTimeWorkingEnd && daixinjia.EndTime >= StratTimeOffworkStart) + { + TimeSpan wuxiushijian = StratTimeOffworkStart.Subtract(StratTimeWorkingEnd); + dangtiandaixinjia += Math.Round(((decimal)(daixinjiashiijan.Hours * 60 + daixinjiashiijan.Minutes - wuxiushijian.Hours * 60 - wuxiushijian.Minutes)) / ((decimal)shangbanshijian), 2); + } + else + { + dangtiandaixinjia += Math.Round(((decimal)(daixinjiashiijan.Hours * 60 + daixinjiashiijan.Minutes)) / ((decimal)shangbanshijian), 2); + } + + + + } + + Daixinjia += dangtiandaixinjia; + + //璁$畻褰撳ぉ鍑哄嫟澶╂暟 Shijichuqin += (1 - Kuanggongtianshu - dangtianqingjia); @@ -1161,6 +1222,64 @@ } Qingjia += dangtianqingjia; + + + + //璁$畻褰撳ぉ甯﹁柂鍋� + List<DateBiJiaoDTO> daixinjias = new List<DateBiJiaoDTO>(); + + var chauxndaixinjias = admAskLeaveDTOMin.Where(x => x.Lavetype == "4" || x.Lavetype == "7" || x.Lavetype == "3" || x.Lavetype == "9").ToList(); + foreach (var admAskLeave in chauxndaixinjias) + { + + DateBiJiaoDTO dateBiJiaoDTO = new DateBiJiaoDTO(); + dateBiJiaoDTO.StartTime = admAskLeave.StratTime; + dateBiJiaoDTO.EndTime = admAskLeave.EndTime; + daixinjias.Add(dateBiJiaoDTO); + + } + + foreach (var daixinjia in daixinjias) + { + if (daixinjia.StartTime < StratTimeWorkingStart) + { + daixinjia.StartTime = StratTimeWorkingStart; + } + if (daixinjia.StartTime > StratTimeWorkingEnd && daixinjia.StartTime < StratTimeOffworkStart) + { + daixinjia.StartTime = StratTimeOffworkStart; + } + + + if (daixinjia.EndTime > StratTimeWorkingEnd && daixinjia.EndTime < StratTimeOffworkStart) + { + daixinjia.EndTime = StratTimeWorkingEnd; + } + + + if (daixinjia.EndTime > StratTimeOffworkEnd) + { + daixinjia.EndTime = StratTimeOffworkEnd; + } + TimeSpan daixinjiashiijan = daixinjia.EndTime.Value.Subtract(daixinjia.StartTime.Value); + if (daixinjia.StartTime <= StratTimeWorkingEnd && daixinjia.EndTime >= StratTimeOffworkStart) + { + TimeSpan wuxiushijian = StratTimeOffworkStart.Subtract(StratTimeWorkingEnd); + dangtiandaixinjia += Math.Round(((decimal)(daixinjiashiijan.Hours * 60 + daixinjiashiijan.Minutes - wuxiushijian.Hours * 60 - wuxiushijian.Minutes)) / ((decimal)shangbanshijian), 2); + } + else + { + dangtiandaixinjia += Math.Round(((decimal)(daixinjiashiijan.Hours * 60 + daixinjiashiijan.Minutes)) / ((decimal)shangbanshijian), 2); + } + + + + } + + Daixinjia += dangtiandaixinjia; + + + //璁$畻褰撳ぉ鍑哄嫟澶╂暟 Jiaban += (1 - Kuanggongtianshu - dangtianqingjia); @@ -1272,7 +1391,7 @@ admAttendanceDtlDTO.OvertimeOut = admSignInDTO.OvertimeOut; admAttendanceDtlDTO.Qingjia = dangtianqingjia; admAttendanceDtlDTO.Xiaojia = dangtianxiaojia; - + admAttendanceDtlDTO.Daixinjia = dangtiandaixinjia; @@ -1308,6 +1427,7 @@ admAttendanceDtlDTO.OvertimeIn = admSignInDTO.OvertimeIn; admAttendanceDtlDTO.OvertimeOut = admSignInDTO.OvertimeOut; admAttendanceDtlDTO.Qingjia = dangtianqingjia; + admAttendanceDtlDTO.Daixinjia = dangtiandaixinjia; admAttendanceDtlDTO.Xiaojia = dangtianxiaojia; @@ -1359,6 +1479,7 @@ admAttendanceDTO.Qingjia = Qingjia; + admAttendanceDTO.Daixinjia = Daixinjia; admAttendanceDTO.Xiaojia = Xiaojia; admAttendanceDTO.Chidao = Chidao; admAttendanceDTO.Islock = "A"; diff --git a/zhengcaioa/zhengcaioa/Views/AdmAttendance/Index.cshtml b/zhengcaioa/zhengcaioa/Views/AdmAttendance/Index.cshtml index 35e46fa..098cc32 100644 --- a/zhengcaioa/zhengcaioa/Views/AdmAttendance/Index.cshtml +++ b/zhengcaioa/zhengcaioa/Views/AdmAttendance/Index.cshtml @@ -33,6 +33,7 @@ { label: '杩熷埌', name: 'Chidao', labtype: 'txt', hidden: false, width: 60 }, { label: '鏃╅��', name: 'Zaotui', labtype: 'txt', hidden: false, width: 60 }, { label: '鏃峰伐', name: 'Kuanggong', labtype: 'txt', hidden: false, width: 60 }, + { label: '甯﹁柂鍋�', name: 'Daixinjia', labtype: 'txt', hidden: false, width: 60 }, { label: '鏄庣粏', name: 'mingxi', labtype: 'txt', hidden: false, width: 60, formatter: function (cellvalue, options, rowObject) { diff --git a/zhengcaioa/zhengcaioa/Views/AdmAttendance/IndexDtl.cshtml b/zhengcaioa/zhengcaioa/Views/AdmAttendance/IndexDtl.cshtml index cbdac5a..d680faf 100644 --- a/zhengcaioa/zhengcaioa/Views/AdmAttendance/IndexDtl.cshtml +++ b/zhengcaioa/zhengcaioa/Views/AdmAttendance/IndexDtl.cshtml @@ -30,7 +30,7 @@ { label: '鍔犵彮涓婄彮', name: 'OvertimeOutName', labtype: 'txt', hidden: false, width: 60 }, { label: '璇峰亣', name: 'Qingjia', labtype: 'txt', hidden: false, width: 60 }, { label: '閿�鍋�', name: 'Xiaojia', labtype: 'txt', hidden: false, width: 60 }, - + { label: '甯﹁柂鍋�', name: 'Daixinjia', labtype: 'txt', hidden: false, width: 60 }, ]; dataUrl = "/AdmAttendance/GetListDtl?AttendanceId=" + AttendanceId; -- Gitblit v1.9.1