username@email.com
2023-02-10 efad4f05e52c89f3b42774e313144abd039370e4
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";