From 0fdfaa5b08721e14c41cd89f63bbf2b7ac84691f Mon Sep 17 00:00:00 2001
From: username@email.com <yzy2002yzy@163.com>
Date: 星期二, 14 二月 2023 09:01:22 +0800
Subject: [PATCH] 提交

---
 zhengcaioa/zhengcaioa/Timer/TimedBackgroundService.cs |  195 ++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 168 insertions(+), 27 deletions(-)

diff --git a/zhengcaioa/zhengcaioa/Timer/TimedBackgroundService.cs b/zhengcaioa/zhengcaioa/Timer/TimedBackgroundService.cs
index f91384a..2574791 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)
                     {
@@ -518,17 +522,22 @@
                                 }
                                 else
                                 {
-                                    if (dateBiJiaoDTOs[i].StartTime > dateBiJiaoDTOs[i - 1].EndTime)
-                                    {
-                                        kuanggong = true;
-                                        break;
-                                    }
-                                    else if (dateBiJiaoDTOs[i].EndTime > dateBiJiaoDTOs[i - 1].EndTime)
+                                    //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 (!starttime.HasValue)
+                                    {
+                                        starttime = dateBiJiaoDTOs[i].StartTime;
+                                    }
                                 }
-                                if (endttime>= StratTimeWorkingEnd)
+                                if (endttime >= StratTimeWorkingEnd && starttime.HasValue)
                                 {
                                     break;
                                 }
@@ -639,17 +648,22 @@
                                 }
                                 else
                                 {
-                                    if (dateBiJiaoDTOs[i].StartTime > dateBiJiaoDTOs[i - 1].EndTime)
-                                    {
-                                        kuanggong = true;
-                                        break;
-                                    }
-                                    else if (dateBiJiaoDTOs[i].EndTime > dateBiJiaoDTOs[i - 1].EndTime)
+                                    //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 (!starttime.HasValue)
+                                    {
+                                        starttime = dateBiJiaoDTOs[i].StartTime;
+                                    }
                                 }
-                                if (endttime >= StratTimeOffworkEnd)
+                                if (endttime >= StratTimeOffworkEnd && starttime.HasValue)
                                 {
                                     break;
                                 }
@@ -768,6 +782,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);
 
@@ -919,14 +990,19 @@
                                     }
                                     else
                                     {
-                                        if (dateBiJiaoDTOs[i].StartTime > dateBiJiaoDTOs[i - 1].EndTime)
-                                        {
-                                            kuanggong = true;
-                                            break;
-                                        }
-                                        else if (dateBiJiaoDTOs[i].EndTime > dateBiJiaoDTOs[i - 1].EndTime)
+                                        //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 (!starttime.HasValue)
+                                        {
+                                            starttime = dateBiJiaoDTOs[i].StartTime;
                                         }
                                     }
                                 }
@@ -1036,14 +1112,19 @@
                                     }
                                     else
                                     {
-                                        if (dateBiJiaoDTOs[i].StartTime > dateBiJiaoDTOs[i - 1].EndTime)
-                                        {
-                                            kuanggong = true;
-                                            break;
-                                        }
-                                        else if (dateBiJiaoDTOs[i].EndTime > dateBiJiaoDTOs[i - 1].EndTime)
+                                        //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 (!starttime.HasValue)
+                                        {
+                                            starttime = dateBiJiaoDTOs[i].StartTime;
                                         }
                                     }
                                 }
@@ -1161,6 +1242,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 +1411,7 @@
                         admAttendanceDtlDTO.OvertimeOut = admSignInDTO.OvertimeOut;
                         admAttendanceDtlDTO.Qingjia = dangtianqingjia;
                         admAttendanceDtlDTO.Xiaojia = dangtianxiaojia;
-                       
+                        admAttendanceDtlDTO.Daixinjia = dangtiandaixinjia;
 
 
 
@@ -1308,6 +1447,7 @@
                         admAttendanceDtlDTO.OvertimeIn = admSignInDTO.OvertimeIn;
                         admAttendanceDtlDTO.OvertimeOut = admSignInDTO.OvertimeOut;
                         admAttendanceDtlDTO.Qingjia = dangtianqingjia;
+                        admAttendanceDtlDTO.Daixinjia = dangtiandaixinjia;
                         admAttendanceDtlDTO.Xiaojia = dangtianxiaojia;
                         
 
@@ -1359,6 +1499,7 @@
 
 
                 admAttendanceDTO.Qingjia = Qingjia;
+                admAttendanceDTO.Daixinjia = Daixinjia;
                 admAttendanceDTO.Xiaojia = Xiaojia;
                 admAttendanceDTO.Chidao = Chidao;
                 admAttendanceDTO.Islock = "A";

--
Gitblit v1.9.1