From 77f8f99697748749edd553b127de34b02ccb18c5 Mon Sep 17 00:00:00 2001
From: username@email.com <yzy2002yzy@163.com>
Date: 星期五, 25 六月 2021 11:43:59 +0800
Subject: [PATCH] 提交

---
 zhengcaioa/zhengcaioa/Timer/TimedBackgroundService.cs | 2729 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 2,725 insertions(+), 4 deletions(-)

diff --git a/zhengcaioa/zhengcaioa/Timer/TimedBackgroundService.cs b/zhengcaioa/zhengcaioa/Timer/TimedBackgroundService.cs
index 1389a5e..0865bfa 100644
--- a/zhengcaioa/zhengcaioa/Timer/TimedBackgroundService.cs
+++ b/zhengcaioa/zhengcaioa/Timer/TimedBackgroundService.cs
@@ -1,20 +1,62 @@
-锘縰sing Microsoft.Extensions.Hosting;
+锘縰sing 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)
         {
@@ -25,8 +67,43 @@
             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("缁х画鎵ц");
             }
@@ -38,5 +115,2649 @@
         {
             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
+                    {
+                        //鐭垮伐鎵i挶
+                        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;
+
+                    
+                }
+
+                //杩熷埌鏃╅��鎵i挶
+                //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;
+                            }
+
+                        }
+
+                    }
+                }
+                //鐥呭亣浜嬪亣鎵i挶
+                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 椋庨櫓浠g悊
+                    cooperOrdertushu = cooperOrderDTOs.Where(x => x.OrderType == "08").ToList();
+                    jijianid = fiPiecerateDTOs.Where(x => x.Standard == "D" && x.Project == "椋庨櫓浠g悊").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;
+        }
     }
 }

--
Gitblit v1.9.1