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